我对数值计算有些困惑。
在C#中:
> 44.5 + (((5220886 / 2) - 2496118) / 897211) * 9
< 44.5
在JS中:
> 44.5 + (((5220886 / 2) - 2496118) / 897211) * 9
< 45.646803817608124
哪个是正确的?谁能帮助我了解为什么会这样?
P.S:尽管SO中有一篇关于C# floats的文章,但是我的问题还是有些不同,因为我没有对字符串做任何事情。这是纯数值计算。
答案 0 :(得分:2)
C#具有整数,而JavaScript没有。 C#中最右边的部分是整数数学,这意味着分数被截断了。在C#中,您需要在数字上添加.0
(例如var x = 2.0;
,var
现在是double
),以使其成为double
,而在JavaScript中,数字在内部表示为双精度。
答案 1 :(得分:1)
在C#中,使用整数除数the result is rounded towards zero。
由于JavaScript与C#的类型不同,因此将使用浮点除法。要在C#中获得相同的结果,请将“ d”或“ .0”添加到除数。