gpt4 book ai didi

Javascript 舍入问题

转载 作者:行者123 更新时间:2023-11-28 20:36:10 27 4
gpt4 key购买 nike

我尝试使用这个:

//var value = "39.99";
//var value = "0.255";
var list = ["39.99", "0.255", "0.306", "0.645", "2.505", "5.726", "9.649", "9.999", "10.01", "0.155", "0.355", "10.05", "14.75", "14.02", "2.405", "14.54","2.485"];


var result;

for( i in list ){
//result = processRounding(parseFloat(list[i]).toFixed(3));
//result = parseFloat(list[i]).toFixed(2);
result = test(parseFloat(list[i]).toFixed(3), 2);
console.log("RESULT["+i+"]: "+ format("#,##0.00", result));
}

function test(value, precision) {
var precision = precision || 0,
neg = value < 0,
power = Math.pow(10, precision),
value = Math.round(value * power),
integral = String((neg ? Math.ceil : Math.floor)(value / power)),
fraction = String((neg ? -value : value) % power),
padding = new Array(Math.max(precision - fraction.length, 0) + 1).join('0');

return precision ? integral + '.' + padding + fraction : integral;
}


function processRounding (value){
//console.log( Math.ceil(value*100) + " " + Math.ceil(value*100) / 2);
var remainder = parseFloat(value % 1).toFixed(2);
var floor = parseInt(Math.floor(value));
console.log(floor + " " + remainder);
if(Math.floor(value) != 0 && Math.floor(value) > 10){
if( parseFloat(remainder) > 0.50 || parseFloat(remainder) > 0.05 ){
console.log("CEIL");
value = Math.ceil(value*10)/10;
}else{
value = value;
}
}else{
if( parseFloat(remainder) > 0.50 || parseFloat(remainder) > 0.05 ){
console.log("ROUND");
value = Math.round(value*100)/100;
}else{
value = value;
}
}

return value;
}

[jsFiddle here ]

但我看到的问题是,当值类似于“2.405”时,无论我是否使用函数“test”,它所做的都是简单地将其设为“2.40” > 或我的 jsfiddle 示例中的函数 processRounding

关于如何将结果变为 2.41 有什么想法吗?从技术上讲,它应该向右舍入,因为最后一位数字是“5”。

更新

使用result = test(parseFloat(list[i]).toFixed(3), 2);

var list = ["39.99", "0.255", "0.306", "0.645", "2.505", "5.726", "9.649", "9.999", "10.01", "0.155", "0.355", "10.05", "14.75", "14.02", "2.405", "14.54","2.485"];

会导致这样的结果:

RESULT[0]: 39.99
RESULT[1]: 0.26
RESULT[2]: 0.31
RESULT[3]: 0.65
RESULT[4]: 2.51
RESULT[5]: 5.73
RESULT[6]: 9.65
RESULT[7]: 10.00
RESULT[8]: 10.01
RESULT[9]: 0.16
RESULT[10]: 0.36
RESULT[11]: 10.05
RESULT[12]: 14.75
RESULT[13]: 14.02
RESULT[14]: 2.40
RESULT[15]: 14.54
RESULT[16]: 2.49

请注意,列表中有一个“2.405”值,在结果[14]中它是“2.40”,它应该在 2.41 中,对吧?

最佳答案

我认为您希望在 JavaScript 中有一个舍入函数。

function trueRound(value, digits){
return (Math.round((value*Math.pow(10,digits)).toFixed(digits-1))/Math.pow(10,digits)).toFixed(digits);
}

可能重复的问题:round off decimal using javascript

关于Javascript 舍入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15330148/

27 4 0
文章推荐: javascript - 单击时平滑滚动到顶部并隐藏
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com