jQuery - 四舍五入到小数点后两位并用该数字计算
jQuery - Round to 2 decimal places and calculate with that number
如何将税收和 brutto 值四舍五入到小数点后两位...
我曾尝试使用 .toFixed(2) 但 returns 一个字符串,然后我无法再用它计算了。
如果有人可以更新 fiddle 并使其正常工作,请问?
然后尝试输入数字 23
// calculate brutto and tax
$(document).on('keyup paste', '#netto', function () {
var netto = $("#netto").val();
$("#brutto").val(netto * 1.19).toFixed(2);
var brutto = $("#brutto").val();
$("#tax").val(brutto - netto);
});
试试这个可能对你有帮助,
$(document).on('keyup paste', '#netto', function () {
var netto = parseFloat($("#netto").val()).toFixed(2);
$("#brutto").val((netto * 1.19).toFixed(2));
var brutto = parseFloat($("#brutto").val()).toFixed(2);
$("#tax").val((brutto - netto).toFixed(2));
});
您的代码中存在一些问题:
1) 你不需要事件委托,除非你有动态加载的元素。
2) 在对值进行任何数学运算之前,您应该始终解析值。
3) 您在 jquery 方法上使用 .toFixed(2)
会引发错误。 toFixed
应该与浮点值一起使用。还要确保在设置两个文本框值时使用 toFixed:
// calculate brutto and tax
$('#netto').on('keyup paste', function () {
var netto = parseFloat($("#netto").val());
$("#brutto").val((netto * 1.19).toFixed(2));
var brutto = parseFloat($("#brutto").val());
$("#tax").val((brutto - netto).toFixed(2));
});
在 jQuery 上下文之外,您可以充分利用以下功能:
function round(value, precision) {
var aPrecision = Math.pow(10, precision);
return Math.round(value*aPrecision)/aPrecision;
}
这是您更新后的 fiddle 演示它的用法:https://jsfiddle.net/yuq6kLn2/
你需要使用 Number 作为 .val()
中的第一个参数,以确保你的所有值都是数字,否则如果至少有一个不是数字,你就会遇到问题,因为我有过。见下文:
$("#tax").val(Number(brutto - netto).toFixed(2));
如何将税收和 brutto 值四舍五入到小数点后两位...
我曾尝试使用 .toFixed(2) 但 returns 一个字符串,然后我无法再用它计算了。
如果有人可以更新 fiddle 并使其正常工作,请问?
然后尝试输入数字 23
// calculate brutto and tax
$(document).on('keyup paste', '#netto', function () {
var netto = $("#netto").val();
$("#brutto").val(netto * 1.19).toFixed(2);
var brutto = $("#brutto").val();
$("#tax").val(brutto - netto);
});
试试这个可能对你有帮助,
$(document).on('keyup paste', '#netto', function () {
var netto = parseFloat($("#netto").val()).toFixed(2);
$("#brutto").val((netto * 1.19).toFixed(2));
var brutto = parseFloat($("#brutto").val()).toFixed(2);
$("#tax").val((brutto - netto).toFixed(2));
});
您的代码中存在一些问题:
1) 你不需要事件委托,除非你有动态加载的元素。
2) 在对值进行任何数学运算之前,您应该始终解析值。
3) 您在 jquery 方法上使用 .toFixed(2)
会引发错误。 toFixed
应该与浮点值一起使用。还要确保在设置两个文本框值时使用 toFixed:
// calculate brutto and tax
$('#netto').on('keyup paste', function () {
var netto = parseFloat($("#netto").val());
$("#brutto").val((netto * 1.19).toFixed(2));
var brutto = parseFloat($("#brutto").val());
$("#tax").val((brutto - netto).toFixed(2));
});
在 jQuery 上下文之外,您可以充分利用以下功能:
function round(value, precision) {
var aPrecision = Math.pow(10, precision);
return Math.round(value*aPrecision)/aPrecision;
}
这是您更新后的 fiddle 演示它的用法:https://jsfiddle.net/yuq6kLn2/
你需要使用 Number 作为 .val()
中的第一个参数,以确保你的所有值都是数字,否则如果至少有一个不是数字,你就会遇到问题,因为我有过。见下文:
$("#tax").val(Number(brutto - netto).toFixed(2));