toFixed方法没有舍入到五位数

时间:2016-04-26 10:18:15

标签: javascript jquery floating-point rounding

我有一个号码var x = 2.305185185185195;

x = x.toFixed(5);

x = 2.30519但我需要这样做而不进行四舍五入,即2.30518

我读了一些带有两个小数位的线程但找不到五位小数。

任何帮助都将不胜感激。

4 个答案:

答案 0 :(得分:4)

您可以使用适当的因子并将其置于最后并返回除法的结果。

基本上这个解决方案将点向左移动10 ^ d因子并得到一个整数,并将该值除以前因子以得到正确的数字。

function getFlooredFixed(v, d) {
    return (Math.floor(v * Math.pow(10, d)) / Math.pow(10, d)).toFixed(d);
}

var x = 2.305185185185195;

document.write(getFlooredFixed(x, 5));

答案 1 :(得分:2)

dependencies {
     ....
    compile 'com.facebook.shimmer:shimmer:0.1.0'
}

答案 2 :(得分:1)

  

Math.trunc()函数通过以下方式返回数字的整数部分:   删除任何小数位数

因此,您可以将数字乘以10 ^ n,其中n是所需的精度数,使用Math.trunc()截断小数部分,除以相同的数字(10 ^ n),然后应用toFixed()对其进行格式化(例如,以2.30而不是2.3的形式)

var x = 2.305185185185195;

console.log((Math.trunc(x*100000)/100000).toFixed(5));

答案 3 :(得分:0)

如果小数是 5,我已经通过添加少量,然后像往常一样四舍五入来整理它:

function(value, decimals) {

    var decimals = decimals || 2;

    if( isNaN(value) ){ return 0; }
        
    var decimalPart = value.toString().trim().split('.').pop(),
        extra       = decimalPart.substr(decimals, decimalPart.length - decimals);

    if( extra == '5' && 
        decimalPart.length > decimals
    ){
        value = parseFloat(value) + (1 / ( Math.pow(10, decimals + 5) ) );  
    }

    return Number( parseFloat( value ).toFixed( decimals ) );
        
}