gpt4 book ai didi

javascript - 尝试在 javascript 中舍入对象值

转载 作者:行者123 更新时间:2023-12-02 19:23:28 24 4
gpt4 key购买 nike

我似乎有一个非常简单的小脚本......

function speedcomp(obj) {
obj.speedmile.value = 3600 / obj.timesec.value
}

function distcomp(obj) {
if (obj.speed.value == "")
obj.speed.value = ((1 * obj.distance.value) / obj.day.value) / 24;
else if (obj.distance.value == "")
obj.distance.value = distance.value;
else if (obj.day.value == "")
obj.day.value = ((1 * obj.distance.value) / obj.speed.value) / 24;
obj.hour.value = ((1 * obj.distance.value) / obj.speed.value);
}​

我有 4 个输入类型文本,其 ID 为距离、速度、日期和小时。当我输入速度和距离并单击 onclick="distcomp(this.form)"按钮时,它可以很好地为我进行数学计算。

我遇到的问题是尝试将天和小时的值四舍五入到最接近的 100。由于我没有预设值,我发现自己在 Math.round 和 Math.floor 中挣扎。我相信答案将是使用 Math.round 但我可以使用一些。

提前谢谢您。

最佳答案

您可以使用 toFixed :

var num = Math.random();
alert(num.toFixed(2));

IE 6 的实现存在一些错误,并且 JavaScript 小数对于某些值并不精确,因此您可能会得到意外的结果:

(0.595).toFixed(2) // 0.59 in Firefox, 0.60 in IE

如果您使用:

Math.round(num*100)/100

那么你将得不到正确的填充(0.59 => 0.6 而不是 0.60)。 MDN还有一些其他有趣的片段。

似乎有一个合理的替代方案来回答 How to write a prototype for Number.toFixed in JavaScript?toFixed 。 .

编辑

这是一个合理的 toFixed 函数,我将继续测试以确保它合理地兼容 ES5。对于 toFixed(0,2) 它返回 0.00 而规范说 0 但我认为前者更有用。

function toFixed(num, places) {

var m, s = '', t;
num = Number(num);

if (isNaN(num)) return 'NaN';

if (num < 0) {
s = '-';
num = num * -1;
}

m = Math.pow(10, places || 0);
num = String(Math.round(num * m) / m).split('.');
t = num[1] || '';
num[1] = t + (new Array(places - t.length + 1)).join('0');

return s + num.join('.');
};

Jasper 的评论似乎是一个很好的解决方案:

(Math.round(.595*100)/100).toFixed(2);

虽然(0).toFixed(2)给出0(根据EMCA-262)而不是更有用的0.00,这是为什么上面避免了toFixed

关于javascript - 尝试在 javascript 中舍入对象值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12273218/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com