var num = 1.42482;
var num2 = 1;
var fnum = Math.floor(num).toFixed(2);
var fnum2 = Math.floor(num2).toFixed(2);
alert(fnum + " and " + fnum2); //both values will be 1.00
16
我真的很喜欢:
var num = 12.749;
parseFloat((Math.round(num * 100) / 100).toFixed(2)); // 123.75
var num = new Number(14.12);
console.log(num.toPrecision(2));//outputs 14
console.log(num.toPrecision(3));//outputs 14.1
console.log(num.toPrecision(4));//outputs 14.12
console.log(num.toPrecision(5));//outputs 14.120
26 回答
如果你已经在使用jQuery,你可以看一下使用jQuery Number Format插件 .
该插件可以将格式化的数字作为字符串返回,您可以设置十进制和千位分隔符,您可以选择要显示的小数位数 .
你也可以得到jQuery Number Format from GitHub .
你在寻找地板吗?
我真的很喜欢:
用2个小数点对数字进行舍入,然后确保用
parseFloat()
解析它以返回Number,而不是String,除非你不关心它是字符串还是数字 .你是这个意思吗?
使用 precision 方法扩展 Math 对象
对于现代浏览器,请使用toLocaleString:
指定区域设置标记作为控制decimal separator的第一个参数 . 对于点,请使用例如英语美国语言环境:
这使:
欧洲大多数国家/地区使用逗号作为小数点分隔符,因此,例如,如果您使用瑞典语/瑞典语区域设置:
它会给:
这里也是一个通用函数,可以格式化为任意数量的小数位:
如果
value = 1.005
,This answer将失败 .作为更好的解决方案,可以通过使用以指数表示法表示的数字来避免舍入问题:
图片来源:Rounding Decimals in JavaScript
圆形到N个位置的更通用的解决方案
在进行toFixed()调用之前,我必须在parseFloat()和Number()转换之间做出决定 . 以下是捕获后用户输入的数字格式的示例 .
HTML:
事件处理程序
上面的代码将导致TypeError异常 . 请注意,虽然html输入类型是“number”,但用户输入实际上是“字符串”数据类型 . 但是,只能在Number对象上调用toFixed()函数 .
我的最终代码如下:
我赞成使用Number()与parseFloat()进行强制转换的原因是因为我不必对空输入字符串或NaN值执行额外验证 . Number()函数会自动处理一个空字符串并将其转换为零 .
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat
最简单的答案:
示例:http://jsfiddle.net/E2XU7/
在需要特定格式的地方,您应该编写自己的例程或使用满足您需要的库函数 . 基本的ECMAScript功能通常不足以显示格式化的数字 .
有关舍入和格式化的详细说明,请访问:http://www.merlyn.demon.co.uk/js-round.htm#RiJ
作为一般规则,舍入和格式化只应作为输出前的最后一步执行 . 提前执行此操作可能会导致意外的大错误并破坏格式 .
将数字转换为字符串,只保留两位小数:
n的结果将是:
parseInt(number * 100) / 100;
为我工作 .这是另一种仅使用楼层进行舍入的解决方案,这意味着确保计算出的金额不会大于原始金额(有时需要交易):Math.floor(num * 100)/ 100
要获得最准确的舍入,请创建此函数:
并用它来舍入到2位小数:
感谢Razu,this article和MDN's Math.round reference .
这在FF4中工作正常:
Live Demo
请注意,它将 round 到2位小数,因此输入
1.346
将返回1.35
.这就是我解决问题的方法:
你没有给我们全面的了解 .
当我将其粘贴到位置栏上时,
javascript:alert(parseFloat(1).toFixed(2))
在我的浏览器中显示1.00 . 但是,如果你之后做了什么,它将恢复 .