Script#数字映射到Javascript的效果如何?

本文关键字:数字 映射 Javascript Script# | 更新日期: 2023-09-27 18:16:13

我一直在玩Script#,我想知道c#数字是如何转换为Javascript的。我写了这段代码

int a = 3 / 2;

并查看编译后的Javascript的相关部分:

var $0=3/2;

在c#中,3 / 2赋值给int的结果是1,但在只有一种数字类型的Javascript中,结果是1.5

由于c#和Javascript行为之间的这种差异,并且由于编译的代码似乎没有补偿它,我是否应该假设我用c#编写的数字计算在编译为Javascript时可能会表现不正确?

Script#数字映射到Javascript的效果如何?

我应该假设我在c#中编写的数字计算可能在编译为Javascript时表现不正确吗?

是的。

就像你说的,"编译后的代码似乎没有补偿它"-尽管对于你提到的a被声明为int的情况,通过使用var $0 = Math.floor(3/2);来补偿很容易。但是如果你不控制"编译器"的工作方式,你就会陷入困境。(您可以手动更正JavaScript,但每次重新生成它时都必须这样做。恶心。)

还请注意,由于JavaScript表示小数点的方式,您也可能遇到十进制数字的问题。大多数人第一次发现JavaScript会告诉你0.4 * 31.2000000000000002时都很惊讶。要了解更多细节,请参阅关于此问题的许多其他问题之一,例如,如何处理JavaScript中的浮点数精度?(实际上,我认为c#以同样的方式处理小数,所以这个问题可能不会让人感到惊讶。但是,这也可能成为新玩家的陷阱。