我有这样的:删除小数点后两位数字不是javascript中的整数?
i=4.568;
document.write(i.toFixed(2));
输出:
4.57
但我不想转过最后一个号码7,我能做些什么?
我有这样的:删除小数点后两位数字不是javascript中的整数?
i=4.568;
document.write(i.toFixed(2));
输出:
4.57
但我不想转过最后一个号码7,我能做些什么?
改为使用简单的数学;
document.write(Math.floor(i * 100)/100);
您可以在自己的函数重用坚持下去;
function myToFixed(i, digits) {
var pow = Math.pow(10, digits);
return Math.floor(i * pow)/pow;
}
document.write(myToFixed(i, 2));
该函数什么也没有返回..! – 2012-04-19 14:26:25
应该是:document.write(Math.floor(i * 100)/ 100); – 2012-04-19 14:30:45
稍微令人费解的做法:
var i=4.568,
iToString = i + '';
i = parseFloat(iToString.match(/\d+\.\d{2}/));
console.log(i);
这有效地采取了可变i
,并将其转换为字符串,然后使用正则表达式小数点前的数字匹配和小数点后面的两个数字,然后使用parseFloat()
将其转换回数字。
参考文献:
就削减较长的字符串:
i.toFixed(3).replace(/\.(\d\d)\d?$/, '.$1')
感谢帖子SLaks – ranjenanil 2012-08-09 06:04:46
toFixed是一个较短的解决方案,它的工作。 – Mayhem 2016-12-21 00:37:00
当你用二进制浮点工作,这样的事情可能发生。 – Pointy 2012-04-19 13:56:15
@Pointy:No;他只是不想四舍五入。 – SLaks 2012-04-19 13:58:48
是的,但我的观点是,通常在处理浮点时,你不能保证你输入的常量最终会达到你想象的结果,舍入或舍入,主要是因为2和5是相对的总数: - ) – Pointy 2012-04-19 14:00:37