1
C#代碼:演員在Javascript像在C#
float floatA = 4;
float floatB = 17;
float floatC = floatA/floatB; //0.235294119
double doubleA = 4;
double doubleB = 17;
double doubleC = doubleA/doubleB; // 0.23529411764705882
float res = (float)doubleC; // 0.235294119
JS代碼:
var a = 4;
var b = 17;
var c = a/b; // 0.23529411764705882
var res = (a/b).toPrecition(9); // 0.235294118
爲什麼floatC &資源是0.235294119代替0.235294118?
c#中的doubleC與js中的c相同。 基本上我需要在javascript中對數字進行舍入與c#相同(雙浮動)
http://stackoverflow.com/questions/11085052/round-twice-error-in-nets-double-tostring-method – adeneo
1176應該是118時,應該是118而不是119,所以問題可能是在C#中,而不是在JavaScript中,這似乎是正確的。 – adeneo
差異是百億分之一。你在測量什麼,需要這種精度? C#和Javascript都沒有向你保證,浮點運算總是從運行開始一直執行;只要保持每個計算的最小精度,兩種語言都可以隨意改變實際結果,因爲他們認爲合適。你不應該問「如何確保結果是相同的」,而你不能這樣做,你應該問的問題是「如果引入一百億分之一的錯誤,我該如何確保我的程序正常工作?」 –