Javascript:Round Half偶数后2位
Javascript: Round Half Even last 2 digits
大家好,
var total1 = 123.44; //how do i round this up to 123.40?
var total2 = 123.45; //this value stay (no changes)
var total3 = 123.46; //how do i round this up to 123.50?
我想做的是:
total = totalfromdb;
GST = total*6/100; //<--- This value needed to round half even as mentioned above
GSTadjust = ???????; //<--- How do i get the total different from GST (round half even above)?
grandtotal = parseInt(GST) + parseInt(total); //<--- This value for mygrandtotal
问题在代码中。我如何将.44到.40和.46到.50取整和/或获得不同的值,例如:
.44到.40,不同的值为-4(显示在页面上)。
.46到.50,不同的值为+4(显示在页面上)。
我需要取整一半的值甚至可能是123.4399999999996或123.45999999
我已经按照Matti Mehtonen的建议编辑了我的问题。
提前谢谢。
您可以执行此
var round_half = function(num) {
if ((num * 100) % 10 != 5) {
num = (Math.round(num * 10) / 10).toFixed(2);
}
return num;
}
在数学意义上:RoundANumberDownward(total * 20) / 20 //does Floor function exist in JS?
但也存在数字问题——大多数实数无法以浮点格式准确表示,因此123.45的存储方式与123.449999999996类似,因此四舍五入可能会产生意外结果。
Upd:您在评论中注意到,您需要四舍五入的值来计算总计。然后,您最好使用20*Xinteger值(精确算术)进行所有计算,并只对最终结果进行除法和四舍五入!
使用
数学圆形(num*100)/100
检查值是否可被0.05整除。如果是,则不需要更改值。如果不是,那么你需要四舍五入这个数字。您可以将值乘以10,然后四舍五入到最接近的整数,然后将该数字除以10。
var round = function (total) {
if (total % 0.05 === 0) {
return total;
} else {
return Math.round(total * 10) / 10;
}
};
顺便说一句,下次当你问问题时,展示你已经尝试过的东西。:)
相关文章:
- 键入最后一位数字后自动提交
- 将数字四舍五入到小数点后两位
- 将数字四舍五入到小数点后两位,以设置货币格式
- 将数字四舍五入到两位小数
- AngularJs Cordova安卓应用程序中输入的4位密码PIN验证
- 为设置为 1 的位对生成所有组合
- AngularJS {{ val | number:1 }} 不四舍五入到小数点后 1 位
- RegExp匹配任意字符串+8位数字
- 用于Javascript中小数输入的Regex,小数前有1到3位,小数后有1到三位
- RegEx查找4位数字前后的逗号
- NodeJS Promise从未达到第三位'然后()'呼叫
- Javascript:Round Half偶数后2位
- 如何使用 num.toString 和 str.split 查找整数的最后一位数字
- 如何从二进制int中获取百分比,每个位表示x%
- 访问下一个html页面的静态4位密码
- 如何使用tweenJS使位图移动到某些点
- Regex表示10位数字,其中没有't允许所有零、所有单个no和序列号
- 查找最低设置位
- Regex表示8位电话号码(新加坡号码长度)
- 使用EaselJS位图时捕获错误的URL