如果你有这些数字:
2
2.05
2.547
2.5
如何检查数字是否有两位小数?
如果它有 2 个小数,你如何去掉第二个小数(四舍五入)但如果需要保留尾随 0?
结果示例:
2.05 would end in 2.1
2.04 would end in 2.0
2.54 would end in 2.5
我意识到您可以使用 toFixed(1),但这会将其转换为字符串。如果使用 parseInt() 将其转换为 int,它会丢失尾随零
多谢你们
如果你有这些数字:
2
2.05
2.547
2.5
如何检查数字是否有两位小数?
如果它有 2 个小数,你如何去掉第二个小数(四舍五入)但如果需要保留尾随 0?
结果示例:
2.05 would end in 2.1
2.04 would end in 2.0
2.54 would end in 2.5
我意识到您可以使用 toFixed(1),但这会将其转换为字符串。如果使用 parseInt() 将其转换为 int,它会丢失尾随零
多谢你们
但是 toFixed 把它变成一个字符串,如果你使用 parseInt 它会去掉尾随的零
您可以有一个数字,也可以有一个数字的表示,但没有第三种选择。
如果你想要一个数字的表示,那么字符串有什么问题?如果你想要一个数字,那么就没有“尾随零”。
“2.0”表示的数字没有尾随零,因为只有表示可以有尾随零。数字二可以用或不用尾随零表示,它是相同的数字。
所以:你想要一个数字还是一个表示?
我认为你一定想要一个表示,因为实际上只有表示可以有一些特定的小数位数。在那种情况下,为什么不是toString
正确的解决方案?
假设这x
是您正在处理的价值
var temp = Math.round(x * 10) / 10; // This is the value as a number
document.write(temp.toFixed(1)); // writes the number in the desired format
1.5
在 JavaScript 中,值和值之间没有区别1.50
——作为数字,它们完全相同。只有当您使用类似的东西将它们转换为字符串时,它们才会toFixed()
变得不同。
我建议(这是基于的 HTML 如下):
$('li').text(function(i,t){
var rounded = t.split('.')[1] ? (Math.round(parseFloat(t) * 10)/10).toFixed(1) : t;
return t + ' (' + rounded + ')';
});
三元组:
t.split('.')[1] ? (Math.round(parseFloat(t) * 10)/10).toFixed(1) : t;
评估是否有句点,如果有,那么我们将浮点数解析为一个数字,将其乘以 10(因为我们希望该数字保留一位小数),将该数字四舍五入,然后将其除以 10,然后toFixed(1)
将数字截断为一位(正确舍入的)小数位。
如果数字没有小数部分(它是整数,而不是浮点数),我们不对其进行任何处理,只需使用找到的现有数字即可。
这基于以下 HTML:
<ul>
<li>2</li>
<li>2.05</li>
<li>2.547</li>
<li>2.5</li>
<li>2.04</li>
</ul>