添加十进制字符串并舍入到最接近的 .05

Adding decimal string and rounding to the nearest .05

本文关键字:最接近 舍入 串并 十进制 字符 字符串 添加      更新时间:2023-09-26

我正在尝试添加一堆字符串,这可能有也可能没有十进制值。将它们相加后,我想将数字四舍五入到接近加拿大货币四舍五入标准,因为便士已被丢弃。

舍入如下所示

向下舍入

1.01 或 1.02 = 1.00

1.06 或 1.07 = 1.05

四舍五入

1.03 或 1.04 = 1.05

1.08 或 1.09 = 1.10

到目前为止,我已经让我的 js 编码看起来像这样。

var total1 = null;
var total2 = null;
var num1 = 144.02;
var num2 = 43.09;
var num3 = 1344.04;
var num4 = 443.07;
total1 = parseFloat(num1) + parseFloat(num2);
console.log(total1);
total1 = parseFloat(num3) + parseFloat(num4);
console.log(total2);

小提琴链接 http://jsfiddle.net/Lg6bj5vp/

有关如何从这里开始的任何帮助将不胜感激。谢谢!

您可以使用

(Math.round(num*20)/20).toFixed(2)

Math.round(num)返回舍入到最接近的整数num

因此,Math.round(num*20)/20返回num舍入到最接近的1/20 = 0.05

最后,num.toFixed(2)返回num转换为具有两个小数的字符串。

function parseNumString(str) {
    var significant = parseFloat(str).toFixed(2);
    var lastDigit = significant.substr(significant.length -1);
    var secondToLast = significant.slice(significant.length -1, significant.length -1);
    if (lastDigit = '1' || lastDigit == '2') {
        string = significant.slice(0, significant.length - 2) + secondToLast + '0';
    } else if (lastDigit == '3' ||
               lastDigit == '4' ||
               lastDigit == '6' ||
               lastDigit == '7' ||) {
        string = significant.slice(0, significant.length - 2) + secondToLast + '5';
    } else if (lastDigit == '8' || lastDigit == '9') {
        string = significant.slice(0, significant.length - 2) + 
                (+secondToLast + 1).toString() + '0';
    } else {
        string = significant;
    }
    return +string;

}