tim*_*hew 5 javascript ecmascript-5
为什么parseInt(1/10000000)结果1,parseInt(1/1000000)结果是0什么?
我需要一些模拟Java的int铸造,比如int i = -1/10000000;,哪个是0.
我应该Math.floor用于积极和Math.ceil消极吗?还是有其他解决方案吗?
Nie*_*sol 10
起初问题似乎很有趣.然后我看着是什么1/10000000.
< 1/10000000
> 1e-7
Run Code Online (Sandbox Code Playgroud)
因此:
< parseInt("1e-7"); // note `parseInt` takes a STRING argument
> 1
Run Code Online (Sandbox Code Playgroud)
如果要截断为整数,可以执行以下操作:
function truncateToInteger(real) {
return real - (real % 1);
}
Run Code Online (Sandbox Code Playgroud)
parseInt期望解析字符串参数,因此首先将其转换为字符串.
1/1000000转换为字符串时"0.000001",parseInt会忽略"."中的所有内容.以后,因为它仅用于整数,所以它将其读作0.
1/10000000如此小,将它转换为字符串使用科学记数法"1e-7",parseInt然后忽略从"e"开始的所有内容,因为它仅用于整数,因此它将其读作1.
基本上,parseInt不是你应该做的.
要将数字转换为整数,或将其转换为0,因为JavaScript中的任何按位操作都会将数字强制为32位int,而ORing为0不会更改超出该值的值:
>(-1/10000000)|0
0
>1234.56|0 // truncation
1234
>(2147483647+1)|0 // integer overflow
-2147483648
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
309 次 |
| 最近记录: |