如何正确地将这些通过此 JQuery 函数从表单的输入标记中检索到的字符串对象转换为数字?
How can I correctly convert into number these string object retrieved from input tag of a form by this JQuery function?
我是 JavaScript 和 JQuery 的新手,我有一个奇怪的行为,将简单的数学求和转换为 JQuery 函数,该函数从某个输入字段中检索数字JSP 页面(我无法放置 JSFiddle,因为这些值取自 jsp 模型对象)
所以,这是我的 JQuery 函数:
$("#variazioneUlterioreSaldoInput").bind('change keyup', function() {
console.log("VALUE CHANGED !!!");
var ulterioreSaldo = $("#variazioneUlterioreSaldoInput").val(); // Non ha separatori di migliaia o di decimanli quindi non devo eseguire replace
var saldo = $("#saldo").val().replace(/[^0-9,]/g, '').replace(",",".");
var anticipo = $("#anticipo").val().replace(/[^0-9,]/g, '').replace(",",".");
var totalePagamento = ulterioreSaldo + saldo + anticipo;
console.log("ulterioreSaldo: " + ulterioreSaldo );
console.log("ulterioreSaldo type: " + typeof ulterioreSaldo);
console.log("saldo: " + saldo);
console.log("saldo type: " + typeof saldo);
console.log("anticipo: " + anticipo);
console.log("anticipo type: " + typeof anticipo);
console.log("totalePagamento: " + totalePagamento);
console.log("totalePagamento type: " + typeof totalePagamento);
});
检索并求和从 3 个不同的输入字段中获得的 3 个值。
因此对于从具有 id="saldo" 和 id="anticipo" 的输入标签检索的值我用 2 个正则表达式替换,因为这些是表示格式化数字的字符串,所以在总和之前我必须获得一个普通数字。
问题是,当我通过这一行计算这些值的总和时:
var totalePagamento = ulterioreSaldo + saldo + anticipo;
我获得了与总和相关的错误输出:totalePagamento: 0.010.004499.48,这是 FireBug 控制台的整个日志。
VALUE CHANGED !!!
ulterioreSaldo: 0.01
ulterioreSaldo type: string
saldo: 0.00
saldo type: string
anticipo: 4499.48
anticipo type: string
totalePagamento: 0.010.004499.48
totalePagamento type: string
如您所见,我还打印了检索到的对象的类型,看起来是字符串而不是数字,所以当我使用 + 运算符时,这些值是连接的而不是求和。
如何正确地将这些值转换为数字并求和?
使用 parseFloat() 对值求和
var totalePagamento = parseFloat(ulterioreSaldo) + parseFloat(saldo) + parseFloat(anticipo);
totalePagamento = totalePagamento.toFixed(2); //it will set floating point to 2 values e.g. 40.22
您必须使用 parseFloat()
函数将字符串转换为数字。 parseFloat()
函数解析字符串参数和 returns 浮点数。
$(document).ready(function(){
var ulterioreSaldo = "0.01";
var saldo = "0.0";
var anticipo = "4499.48";
var sum = parseFloat(ulterioreSaldo) + parseFloat(saldo) + parseFloat(anticipo);
alert(sum);
});
这是相同的Demo。
由于您要添加小数,请尝试使用 parseFloat 方法:
var totalePagamento = parseFloat(ulterioreSaldo) + parseFloat(saldo) + parseFloat(anticipo);
如果您只需要小数点后的 2 位数字,请使用:
totalePagamento.toFixed(2);
我是 JavaScript 和 JQuery 的新手,我有一个奇怪的行为,将简单的数学求和转换为 JQuery 函数,该函数从某个输入字段中检索数字JSP 页面(我无法放置 JSFiddle,因为这些值取自 jsp 模型对象)
所以,这是我的 JQuery 函数:
$("#variazioneUlterioreSaldoInput").bind('change keyup', function() {
console.log("VALUE CHANGED !!!");
var ulterioreSaldo = $("#variazioneUlterioreSaldoInput").val(); // Non ha separatori di migliaia o di decimanli quindi non devo eseguire replace
var saldo = $("#saldo").val().replace(/[^0-9,]/g, '').replace(",",".");
var anticipo = $("#anticipo").val().replace(/[^0-9,]/g, '').replace(",",".");
var totalePagamento = ulterioreSaldo + saldo + anticipo;
console.log("ulterioreSaldo: " + ulterioreSaldo );
console.log("ulterioreSaldo type: " + typeof ulterioreSaldo);
console.log("saldo: " + saldo);
console.log("saldo type: " + typeof saldo);
console.log("anticipo: " + anticipo);
console.log("anticipo type: " + typeof anticipo);
console.log("totalePagamento: " + totalePagamento);
console.log("totalePagamento type: " + typeof totalePagamento);
});
检索并求和从 3 个不同的输入字段中获得的 3 个值。
因此对于从具有 id="saldo" 和 id="anticipo" 的输入标签检索的值我用 2 个正则表达式替换,因为这些是表示格式化数字的字符串,所以在总和之前我必须获得一个普通数字。
问题是,当我通过这一行计算这些值的总和时:
var totalePagamento = ulterioreSaldo + saldo + anticipo;
我获得了与总和相关的错误输出:totalePagamento: 0.010.004499.48,这是 FireBug 控制台的整个日志。
VALUE CHANGED !!!
ulterioreSaldo: 0.01
ulterioreSaldo type: string
saldo: 0.00
saldo type: string
anticipo: 4499.48
anticipo type: string
totalePagamento: 0.010.004499.48
totalePagamento type: string
如您所见,我还打印了检索到的对象的类型,看起来是字符串而不是数字,所以当我使用 + 运算符时,这些值是连接的而不是求和。
如何正确地将这些值转换为数字并求和?
使用 parseFloat() 对值求和
var totalePagamento = parseFloat(ulterioreSaldo) + parseFloat(saldo) + parseFloat(anticipo);
totalePagamento = totalePagamento.toFixed(2); //it will set floating point to 2 values e.g. 40.22
您必须使用 parseFloat()
函数将字符串转换为数字。 parseFloat()
函数解析字符串参数和 returns 浮点数。
$(document).ready(function(){
var ulterioreSaldo = "0.01";
var saldo = "0.0";
var anticipo = "4499.48";
var sum = parseFloat(ulterioreSaldo) + parseFloat(saldo) + parseFloat(anticipo);
alert(sum);
});
这是相同的Demo。
由于您要添加小数,请尝试使用 parseFloat 方法:
var totalePagamento = parseFloat(ulterioreSaldo) + parseFloat(saldo) + parseFloat(anticipo);
如果您只需要小数点后的 2 位数字,请使用:
totalePagamento.toFixed(2);