我使用以下代码:
entries.category[newcat].subcategory[newsub].items[n] = {
name: $("#name").val(),
shortcut: $("#short").val(),
description: $("#desc").val(),
price: parseFloat($("#price").val()).toFixed(2),
vat: parseFloat($("#vat").val()).toFixed(2)
};
然而,当我立即使用JSON.stringify
进行检查时,price
和VAT
都会附加为字符串,即“10.50”(而不是10.50)。
问题:如何确保价格和增值税存储为浮动?
非常感谢!
答案 0 :(得分:2)
使用单一+
转换字符串值。输入元素值始终是字符串,即使您应用 parseFloat ,但再次将 toFixed 应用于该字符串,也会将数字转回字符串。假设您要保持 toFixed 调用以限制小数位数,请使用+
对数字进行最终强制执行:
entries.category[newcat].subcategory[newsub].items[n] = {
name: $("#name").val(),
shortcut: $("#short").val(),
description: $("#desc").val(),
price: +parseFloat($("#price").val()).toFixed(2),
vat: +parseFloat($("#vat").val()).toFixed(2)
};
为了避免从string-to-float-to-string-to-float的转换,你可以写:
price: Math.round($("#price").val()*100)/100,
......等,以达到相同的最终结果。 Math.round
会强制论证float
。
答案 1 :(得分:0)
使用toFix(2)
将结果转换回字符串。要将值保持为float,您需要将toFix(2)
的结果传递给另一个parseFloat
parseFloat(parseFloat($("#vat").val()).toFixed(2))