我有一个id = num的输入文本框。我给它一个值32.5687。我想将它转换为像这样的数字32.57。我尝试了下面的代码返回32.57然后我用typeof()方法测试它的类型,它说它是一个字符串而不是一个数字。
$(documnet).ready(function(){
$nmuber = $("#num").val();
$number = parseFloat($number).toFixed(2);
alert(typeof($number));
});
我的错误或将文本输入值转换为两位十进制数的正确过程是什么?
答案 0 :(得分:1)
除了错别字,这是预期的行为; toFixed()
返回一个字符串。如果您希望将舍入值保留为浮点值,请使用Math.round()
:
number = Math.round(parseFloat('32.5687') * 100) / 100;
console.log(number);
console.log(typeof(number));

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
答案 1 :(得分:1)
var num = 32.5687;
var n = num.toFixed(2);
n = parseFloat(n);
alert(typeof(n));
toFixed()将只格式化字符串。您需要将parseFloat()与toFixed()结合使用。如上所述的简化示例。
正如@Rory正确评论 - 请注意,在字符串上调用toFixed()会导致隐式类型强制,这可能无法在所有情况下为您提供所期望的结果。
答案 2 :(得分:0)
尝试
var numb = parseFloat($("#num").val());
numb = Math.round(numb * 100) / 100
alert(numb);
答案 3 :(得分:-1)
jQuery .val()函数将始终为所选的单个元素返回字符串。你必须明确地parseFloat在你的代码中使用它。