猿问

将数字截断为小数点后两位,不舍入

假设我的值为15.7784514,我想显示它为15.77,没有四舍五入。

var num = parseFloat(15.7784514);document.write(num.toFixed(1)+"<br />");document.write(num.toFixed(2)+"<br />");
document.write(num.toFixed(3)+"<br />");document.write(num.toFixed(10));

结果-

15.815.7815.77815.7784514000

如何显示15.77?


泛舟湖上清波郎朗
浏览 391回答 3
3回答

四季花海

将数字转换为字符串,将数字匹配到小数点第二位:function calc(theform) {&nbsp; &nbsp; var num = theform.original.value, rounded = theform.rounded&nbsp; &nbsp; var with2Decimals = num.toString().match(/^-?\d+(?:\.\d{0,2})?/)[0]&nbsp; &nbsp; rounded.value = with2Decimals}<form onsubmit="return calc(this)">Original number: <input name="original" type="text" onkeyup="calc(form)" onchange="calc(form)" /><br />"Rounded" number: <input name="rounded" type="text" placeholder="readonly" readonly></form>这个toFixed方法在某些情况下失败。toString所以小心点。

蝴蝶不菲

新答案,总是准确的function&nbsp;toFixed(num,&nbsp;fixed)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;re&nbsp;=&nbsp;new&nbsp;RegExp('^-?\\d+(?:\.\\d{0,'&nbsp;+&nbsp;(fixed&nbsp;||&nbsp;-1)&nbsp;+&nbsp;'})?'); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;num.toString().match(re)[0];}如javascript中的浮点数学总是会有边缘的情况,以前的解决方案大多数时候都是精确的,这是不够好的。对于这种情况,有一些解决办法num.toPrecision,&nbsp;bigDecimal.js,和会计js..然而,我相信仅仅解析字符串将是最简单和始终准确的。旧的答案,并不总是准确的。滚动您自己的toFixed函数:function&nbsp;toFixed(num,&nbsp;fixed)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;fixed&nbsp;=&nbsp;fixed&nbsp;||&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;fixed&nbsp;=&nbsp;Math.pow(10,&nbsp;fixed); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Math.floor(num&nbsp;*&nbsp;fixed)&nbsp;/&nbsp;fixed;}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答