繁体   English   中英

如何在Javascript中将小数点添加到十进制数

[英]How to add decimal point to decimal number in Javascript

我试图将 0.10 添加到 23.50 但我得到 23.50.10 而不是 23.60

我的代码

console.log((parseFloat(23.50) + parseFloat((Math.random() * 0.10) + 0.01).toFixed(2)));

这段代码生成小数点,如:0.04、0.29 等...

parseFloat((Math.random() * 0.90) + 0.01).toFixed(2)

您的.toFixed在错误的括号中。

尝试

console.log((parseFloat(23.50) + parseFloat((Math.random() * 0.10) + 0.01)).toFixed(2));

你有.toFixed(2)在错误的地方。 结果创建了一个字符串,然后将其连接起来。 它应该是这样的:

console.log((parseFloat(23.50) + parseFloat((Math.random() * 0.10) + 0.01)).toFixed(2));

整合评论:

正如Scott Sauyet 所说toFixed是在错误的地方。 您最终得到number + string ,它将数字转换为字符串并进行字符串连接。

正如我所说:这不是唯一的问题。 你不会parseFloat已经是数字的东西。 这样做会将数字转换为字符串,然后将该字符串解析为数字,这充其量是毫无意义的。 :-)

正如Barmar 所说:进行计算,然后对结果使用toFixed

console.log((23.50 + (Math.random() * 0.10) + 0.01).toFixed(2));

此外, +的优先级低于* ,因此您不需要那些内部括号(或0.10上的最后一个0 ):

console.log((23.50 + Math.random() * 0.1 + 0.01).toFixed(2));

...当然,如果您喜欢,您可以出于风格原因将它们包括在内。

这可能是一个错字,但您的 .toFixed() 位于错误的位置。 它将 yourparseFloat((Math.random() * 0.10) + 0.01) 转换为字符串,然后再添加到 parseFloat(23.50) 导致字符串连接。

执行添加,然后执行 .toFixed():

console.log((parseFloat(23.50) + parseFloat((Math.random() * 0.10) + 0.01)).toFixed(2));

或者要格外小心并使用 var:

var foo = parseFloat(23.50) + parseFloat((Math.random() * 0.10) + 0.01);
console.log(foo.toFixed(2));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM