/ / Oprava plávajúcej matematiky rozbité vynásobením, je to v poriadku? - javascript, matematika

Oprava plávajúcej matematiky rozdelená vynásobením, je to v poriadku? - javascript, matematika

Mám niekoľko výpočtov, ktoré majú ťažkosti kvôli problémom s plávajúcou matematikou v js. Snažím sa to opraviť vynásobením všetkých častí rovnice 1000 a potom rozdelením výsledku o 1000.

var a = 16924.83,
b = 16835.61;

var c = a-b; //outputs 89.22000000000116
var d = (1000*a-1000*b)/1000;  //outputs 89.22 and seems to be working correct

Je v poriadku urobiť opravu problému s plávajúcou matematikou týmto spôsobom?

Čítal som Je matematika s plávajúcou desatinnou čiarkou zlomená?

odpovede:

1 pre odpoveď č. 1

Po vynásobení by ste mali zaokrúhliť:

var d = (Math.round(1000*a)-Math.round(1000*b))/1000;

Len vynásobenie nemusí vyriešiť problém. Pri priradení

var a = 16924.83;

môže to vnútorne reprezentovať ako niečo podobné 16924.8300001, takže keď násobíte 1000 dostanete 16924830.001, Musíte sa zaobchádzať, aby ste sa zbavili tejto frakcie.