小数在jquery解析十进制值时会丢失

  • 本文关键字:十进制 jquery 小数 jquery
  • 更新时间 :
  • 英文 :


我尝试获得一个十进制值,以便在jquery中进一步计算。

var vatPercentageString = $("#Price").val();
var percentage = parseFloat(vatPercentageString).toFixed(2);

但是即使我的值是"12,34"在"价格"中文本框的百分比值只有12,为什么呢?

因为,不适合作为小数分隔符。您应该首先将其替换为.:

function changed() {
var vatPercentageString = $("#Price").val().replace(',', '.');
var percentage = parseFloat(vatPercentageString).toFixed(2);
console.log(percentage);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<input type="text" id="Price" onchange="changed()" />

parseFloat不理解逗号(,),根据规范:

如果parseFloat遇到非加号(+)、减号(-U+002D - minus)、数字(0-9)、小数点(.)或指数(eE)的字符,则返回该字符之前的值,忽略无效字符及其后面的字符。

因此,如果您想将逗号解析为数字,则需要将其替换为小数点。

// After getting our value, replace `,` with `.`
var vatPercentageString = $("#Price").val().replace(',', '.');
var percentage = parseFloat(vatPercentageString).toFixed(2);
console.log(percentage);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label>Price: <input id="Price" value="12,34"></label>

最新更新