所以从阅读中我知道我应该代表美元金额(如10.78美元)整数(1078美分)。
My apps input is sometimes pretty ugly. Stuff like "$10.78533999". I know I can use parseFloat + Math.round like so:
返回Math.round(100 * parseFloat(dollarsAndCentsString.replace(/ [$,] / g,'')));
但我担心舍入错误。我可以做这样详细的事情:
Number.prototype.round = function(places){
places = Math.pow(10, places);
return Math.round((this + Number.EPSILON) * places) / 100;
}
var shiftDecimal = function(amount){
var amountDecPos = amount.indexOf('.');
var intAmount = amount.substring(0, amount.indexOf('.'));
var remainder = parseFloat(amount.substring(amount.indexOf('.') , amount.length ) ).round(2).toString().substr(2);
return intAmount + remainder;
}
https://jsfiddle.net/eg0as88b/1/
我有一个自定义(我认为非常准确)的舍入函数,操作符仅在小数部分上,以最小化舍入误差。
这有多大意义吗?似乎应该有更好的方式(尤其是表现明智)。谢谢!
答案 0 :(得分:0)
最好的方法是使用 number.toLocaleString()函数。
这是JavaScript提供的内置函数,用于将数字转换为货币。
实施例。
1 2017-04-01 11:30:00.0000000 11:35:15.0000000 1 Worktime 06:00:00.0000000 18:00:00.0000000
2 2017-04-01 18:45:02.0000000 18:46:05.0000000 2 Freetime 18:00:00.0000000 06:00:00.0000000
3 2017-04-01 03:45:02.0000000 03:46:05.0000000 2 Freetime 18:00:00.0000000 06:00:00.0000000
4 2017-04-01 14:30:00.0000000 14:35:15.0000000 1 Worktime 06:00:00.0000000 18:00:00.0000000
参考链接:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString