Javascript parseInt 无法按预期工作



我正在使用javascript,但有些东西并不像我预期的那样工作。这是一行代码,类似于:

const val = parseInt(100/1000000000, 10);

我预计结果是0,但javascript的结果是1。但为什么呢?然后我尝试了一些类似的东西:

parseInt(0.000001, 10) // returns 0
parseInt(0.0000001, 10) // returns 1, I expect to have 0

如何使用这种代码获得预期结果?

parseInt如果第一个参数还不是字符串,则将其强制为字符串。

0.0001这样的一些小值被强制为'0.0001'

但是像0.0000001这样的非常小的值被强制为'1e-7'。这应该会让问题变得非常明显:parseInt只解析前导数字。

仅尝试对字符串执行parseInt。如果您有一个数字,请使用不同的方法,如Math.roundMath.ceil

parseInt用于解析字符串中的整数。它将参数转换为字符串。在第一种情况下,"1e-7"将转换为1

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt:

parseInt((函数解析字符串参数并返回整数

您正在寻找Math.round

正如Meagar所指出的,parseInt将字符串转换为(整数(。如果你给它一些不是字符串的东西,比如布尔值或数字,你会得到奇怪的结果,因为你滥用了这个工具。

一个简单的解决方法是先将数字转换为字符串,然后得到预期的结果。例如。。。

parseInt('0.0000001', 10);
// 0

最新更新