如何正确地将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"id的输入标记中检索到的值,我应用了一个替换为2的正则表达式,因为这些字符串表示格式化的数字,所以在求和之前,我必须获得一个纯数字。
问题是,当我通过以下行执行这些值的总和时:
var totalePagamento = ulterioreSaldo + saldo + anticipo;
我获得了与总和相关的错误输出:totalPagemento: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
正如您所看到的,我还打印了检索到的对象的类型,它们似乎是String而不是Number,所以当我使用+运算符时,这些值是串联的,而不是求和的。
如何正确地将这些值转换为数字并求和?
由于要添加十进制数,请尝试使用parseFloat方法:
var totalePagamento = parseFloat(ulterioreSaldo) + parseFloat(saldo) + parseFloat(anticipo);
如果你只想在小数后使用两位数字:
totalePagamento.toFixed(2);
使用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()
函数解析字符串参数并返回一个浮点数。
$(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);
});
这里有一个相同的演示。
相关文章:
- 将大数组(字符串和类型数组的混合物)存储到blob或文件中/从blob或文件检索大数组的最佳方式
- 从Meteor中的数组中检索字符串
- 如何解析文本区域中的结构化字符串数据(接近JSON)以检索其所需的属性
- 解析字符串包含'"'从mysql检索到JSON
- 从字符串中检索自定义参数的值
- 如何检索其属性为给定参数的子字符串的所有文档
- 字符串比较显示从flash[:alert]检索到的字符串上的错误
- 将选择器检索为插件中的字符串
- JQuery:参数:硬编码字符串与 ajax 检索到的字符串
- 在解析中检索字符串
- 正则表达式:检索字符串第一次出现之前的行
- 从 json 字符串中检索数组值
- 如何从 JSON 字符串中检索多个属性值
- Javascript:如何检索*字符串*数字的小数位数
- Javascript 检索字符串数组值错误
- 如何使用正则表达式检索字符串中的两个数字
- 使用正则表达式检索字符串的特定部分
- 从Meteor中的数组中检索字符串形式的值
- JavaScript在散列后检索字符串
- 在JQuery中检索字符串开头的整数