C#和JS中的计算有所不同

时间:2019-03-06 07:15:42

标签: javascript c#

我对数值计算有些困惑。

在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的文章,但是我的问题还是有些不同,因为我没有对字符串做任何事情。这是纯数值计算。

2 个答案:

答案 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”添加到除数。