在javascript中是否删除两个小数点后的数字而不是整数?

在javascript中是否删除两个小数点后的数字而不是整数?,javascript,numbers,rounding,Javascript,Numbers,Rounding,我有这个: i=4.568; document.write(i.toFixed(2)); 输出: 4.57 但是我不想把最后一个数字四舍五入到7,我能做什么呢?用简单的数学来代替 document.write(Math.floor(i * 100) / 100); 您可以将其粘贴到自己的函数中以供重用 function myToFixed(i, digits) { var pow = Math.pow(10, digits); return Math.floor(i *

我有这个:

i=4.568;
document.write(i.toFixed(2));
输出:

4.57

但是我不想把最后一个数字四舍五入到7,我能做什么呢?

用简单的数学来代替

document.write(Math.floor(i * 100) / 100);

您可以将其粘贴到自己的函数中以供重用

function myToFixed(i, digits) {
    var pow = Math.pow(10, digits);

    return Math.floor(i * pow) / pow;
}

document.write(myToFixed(i, 2));

一种稍微复杂的方法:

var i=4.568,
    iToString = ​i + '';
    i = parseFloat(iToString.match(/\d+\.\d{2}/));
console.log(i);
这将有效地获取变量
i
并将其转换为字符串,然后使用正则表达式匹配小数点前的数字和小数点后的两个数字,然后使用
parseFloat()
将其转换回数字

参考资料:


只需剪断较长的线:

i.toFixed(3).replace(/\.(\d\d)\d?$/, '.$1')

使用二进制浮点时,可能会发生类似的情况。@Pointy:No;他只是不想舍入。是的,但我的观点是,一般来说,在处理浮点时,你不能保证你输入的常量最终会是你认为的,舍入或不舍入,主要是因为2和5是相对素数:-)函数不返回任何东西。。!应该是:文件。书写(数学。楼层(i*100)/100);toFixed是一个较短的解决方案,它完成了任务。