为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

泛舟湖上清波郎朗 2019-08-03 07:03:53
假设我的值为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?
查看完整描述

3 回答

?
四季花海

TA贡献1811条经验 获得超5个赞


将数字转换为字符串,将数字匹配到小数点第二位:


function calc(theform) {

    var num = theform.original.value, rounded = theform.rounded

    var with2Decimals = num.toString().match(/^-?\d+(?:\.\d{0,2})?/)[0]

    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所以小心点。




查看完整回答
反对 回复 2019-08-05
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

新答案,总是准确的

function toFixed(num, fixed) {
    var re = new RegExp('^-?\\d+(?:\.\\d{0,' + (fixed || -1) + '})?');
    return num.toString().match(re)[0];}

javascript中的浮点数学总是会有边缘的情况,以前的解决方案大多数时候都是精确的,这是不够好的。对于这种情况,有一些解决办法num.toPrecisionbigDecimal.js,和会计js..然而,我相信仅仅解析字符串将是最简单和始终准确的。


旧的答案,并不总是准确的。

滚动您自己的toFixed函数:

function toFixed(num, fixed) {
    fixed = fixed || 0;
    fixed = Math.pow(10, fixed);
    return Math.floor(num * fixed) / fixed;}




查看完整回答
反对 回复 2019-08-05
  • 3 回答
  • 0 关注
  • 390 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信