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时可能会表现不正确?
我应该假设我在c#中编写的数字计算可能在编译为Javascript时表现不正确吗?
是的。
就像你说的,"编译后的代码似乎没有补偿它"-尽管对于你提到的a
被声明为int
的情况,通过使用var $0 = Math.floor(3/2);
来补偿很容易。但是如果你不控制"编译器"的工作方式,你就会陷入困境。(您可以手动更正JavaScript,但每次重新生成它时都必须这样做。恶心。)
还请注意,由于JavaScript表示小数点的方式,您也可能遇到十进制数字的问题。大多数人第一次发现JavaScript会告诉你0.4 * 3
是1.2000000000000002
时都很惊讶。要了解更多细节,请参阅关于此问题的许多其他问题之一,例如,如何处理JavaScript中的浮点数精度?(实际上,我认为c#以同样的方式处理小数,所以这个问题可能不会让人感到惊讶。但是,这也可能成为新玩家的陷阱。