Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将这个JQuery函数从表单的输入标记中检索到的字符串对象正确地转换为数字?_Javascript_Jquery_Html_Jquery Selectors_Javascript Objects - Fatal编程技术网

Javascript 如何将这个JQuery函数从表单的输入标记中检索到的字符串对象正确地转换为数字?

Javascript 如何将这个JQuery函数从表单的输入标记中检索到的字符串对象正确地转换为数字?,javascript,jquery,html,jquery-selectors,javascript-objects,Javascript,Jquery,Html,Jquery Selectors,Javascript Objects,我对JavaScript和JQuery非常陌生,我有一个奇怪的行为,在JQuery函数中有一个简单的数学求和,该函数从JSP页面中的某个输入字段中检索数字(我不能放入JSFIDLE,因为值取自JSP模型对象) 这是我的JQuery函数: $("#variazioneUlterioreSaldoInput").bind('change keyup', function() { console.log("VALUE CHANGED !!!"); var ulter

我对JavaScript和JQuery非常陌生,我有一个奇怪的行为,在JQuery函数中有一个简单的数学求和,该函数从JSP页面中的某个输入字段中检索数字(我不能放入JSFIDLE,因为值取自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()
函数解析字符串参数并返回浮点数

$(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);
});

以下是一个相同的示例。

由于您要添加十进制数,请尝试使用parseFloat方法:

var totalePagamento = parseFloat(ulterioreSaldo) + parseFloat(saldo) + parseFloat(anticipo); 
如果小数点后只需要2位数字,请使用:

totalePagamento.toFixed(2);

尝试将变量初始化为数字对象,例如:
var-ulterioreSaldo=newnumber($(“#variazioneUlterioreSaldoInput”).val()