如何四舍五入,如果值是两个小数和格式为3个小数在javascript
how to round up if value is two decimal and format as 3 decimals in javascript?
测试案例:
var num1 = 10.66;
var num2 = 10.7898
我在stackOverFlow上找到的函数:
function formatUserCurrencyValue(fieldValue){
var num = parseFloat(fieldValue);
var str = num.toFixed(10);
str = str.substring(0, str.length-7);
return str;
};
我希望结果是这样的:如果10.66
则10.670
,如果10.78998
则10.789
。基本上,如果值有2位小数,那么结果应该四舍五入,然后格式化为3位小数。如果超过2位小数(例如:10.78998
)然后是10.789
,在3位小数之后修剪值。
谁能告诉我怎么才能做到这一点?我尝试了上述函数以及我发现的其他一些函数,但结果不是我对10.66
场景的期望。我得到10.660
而不是10.670
。
看起来这里已经有人问过类似的问题:在JavaScript中使用恰好两个小数格式化数字
我喜欢@Miguel的答案。使用函数进行转换。
function precise_round(num, decimals) {
var t=Math.pow(10, decimals);
return (Math.round((num * t) + (decimals>0?1:0)*(Math.sign(num) * (10 / Math.pow(100, decimals)))) / t).toFixed(decimals);
}
则使用函数。precise_round (num, 3)
抛开num1四舍五入将产生10.66而不是10.67这一事实,可以使用下面的函数来实现,该函数将把适当的结果打印到控制台。
var num1 = 10.66;
var num2 = 10.7898;
var roundIt = function(num) {
console.log(parseFloat(Math.round(num * 1000) / 1000).toFixed(3));
};
roundIt(num2); //10.790
roundIt(num1); //10.660
由于使用toFixed()方法返回一个字符串,因此我们将结果包装在parseFloat()中,因此我们得到一个浮点数
这就是你想要的,我觉得很奇怪。像这样的圆是很"特别"的。至少……但是,这正是你想要的。
var weirdRound = function(n) {
var splited = n.toString().split(".");
var res = 0;
if(splited[1]) {
var len = splited[1].length;
if(len > 3) {
splited[1] = splited[1].substr(0, 3);
res = (splited.join(".") *1).toFixed(3);
} else if(len == 2) {
splited[1] = splited[1].substr(0, 1) + ((splited[1].substr(len -1, len) *1) +1);
res = (splited.join(".") *1).toFixed(3);
} else if(len == 1) {
res = n.toFixed(2)
} else {
res = n.toFixed(3);
}
}
return res.toFixed(3);
}
console.log(weirdRound(10.66));
console.log(weirdRound(10.9));
console.log(weirdRound(10.7898));
console.log(weirdRound(1.12));
console.log(weirdRound(1.12565));
console.log(weirdRound(1.125));
相关文章:
- JQuery合并了keyup和focusout两个函数
- 如何使用 node.js 比较两个 json 数组
- 为复选框javascript指定两个值
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 单击时切换两个图像
- 我可以'我似乎不知道如何修复javascript中的两个lint.有人能帮我理解吗
- 基于两个条件退出While循环
- 如何在这里将两个值最低的数字相加
- 组合两个javascript函数
- 在数字字符串的最后两个数字上加上小数
- 对于大的数字,在这个本地化函数上强制使用两个小数
- 如何使输入只接受两个小数,并且最多有10位数字
- Javascript-只获取所选元素的两个小数
- 我想比较两个小数,看哪个更大
- 用两个小数解析浮点,
- 在不使用. tofixed()的情况下用两个小数格式化float
- 两个整数,三个小数的正则表达式(XX.XXX)
- 如何四舍五入,如果值是两个小数和格式为3个小数在javascript
- 用javascript将数字转换为逗号分隔的格式,其中包含两个小数
- js设置y轴标签格式以显示两个小数