Javascript 如何在不舍入的情况下从长数字中删除小数?
我想知道如何在不需要四舍五入的情况下去掉大数中的小数? 我的浮动是: 数字=32.223516 我想要的结果是3223516 当我这样做时: parseInt(数字*1000000,10)它给了我3223515 如果我使用Math.ceil或Math.round,那么对于需要进行四舍五入的案例,这将是一个问题 有没有更干净的方法 提前谢谢Javascript 如何在不舍入的情况下从长数字中删除小数?,javascript,floating-point,Javascript,Floating Point,我想知道如何在不需要四舍五入的情况下去掉大数中的小数? 我的浮动是: 数字=32.223516 我想要的结果是3223516 当我这样做时: parseInt(数字*1000000,10)它给了我3223515 如果我使用Math.ceil或Math.round,那么对于需要进行四舍五入的案例,这将是一个问题 有没有更干净的方法 提前谢谢 Number.parseInt( yourVariable.toString().replace('.','') ); 试试这个: let number=3
Number.parseInt(
yourVariable.toString().replace('.','')
);
试试这个:
let number=32.223516
log(parseInt(number.toString().replace('.','')
如果您知道该数字总是需要乘以1000000才能得到它的整数版本,请使用Math.round
:
console.log(Math.round(32.223516*1000000))代码>这是JavaScript如何将所有数字作为浮点数处理的示例
在这种情况下,可以帮助您的是,如果您将数字转换为字符串形式,则使用toFixed()方法仅保留小数点后所需的数字量,在您的情况下可能是0,该方法将相应地进行转换和舍入,如下所示:
number = 32.223513;
numberToFixed = (num * 1000000).toFixed(0); //argument is amount of numbers to be retained after decimal point
千万不要在非字符串的东西上使用parseInt
。你会知道,乘以1000000会得到数字的整数版本吗?32.223516*1000000
不起作用的原因是它会产生3222515.999999999 6
(可能会让我的9
s倒数,但足够接近)。浮点运算总是有问题的,所以如果你做数学运算,或者坚持字符串操作,你需要使用某种形式的舍入。是否有任何原因导致您无法转换为字符串并删除
?(需要明确的是,可能有这样一个原因;浮点的字符串形式并不总是非常大或非常小的值所期望的形式)