我尝试获得一个十进制值,以便在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
)、小数点(.
)或指数(e
或E
)的字符,则返回该字符之前的值,忽略无效字符及其后面的字符。
因此,如果您想将逗号解析为数字,则需要将其替换为小数点。
// 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>