Zastanawiałem się, czy istnieje sposób przezwyciężania problem dokładności, który wydaje się być wynikiem wewnętrznej reprezentacji mojego urządzenia liczb zmiennoprzecinkowych:Radzenie sobie z problemami dokładności w liczbach zmiennoprzecinkowych
Dla dobra klarowność problem jest streścić:
// str is "4.600"; atof(str) is 4.5999999999999996
double mw = atof(str)
// The variables used in the columns calculation below are:
//
// mw = 4.5999999999999996
// p = 0.2
// g = 0.2
// h = 1 (integer)
int columns = (int) ((mw - (h * 11 * p))/((h * 11 * p) + g)) + 1;
przed odlewaniem do liczby całkowitej wpisz wynik kolumn obliczeń jest +1,9999999999999996; tak blisko, ale tak daleko od pożądanego wyniku 2.0.
Wszelkie sugestie najbardziej mile widziane.
to pytanie zostało zadane i odpowiedzi przed ... po prostu patrząc na to ... –
Czytaj na temat analizy numerycznej, jest to duży problem w niektórych sytuacjach. Może użyć alternatywnych (ale wolniejszych) bibliotek matematycznych, takich jak BigDecimal, itd ... – JeeBee