我的javascript无法正确计算货币总值

我的javascript无法正确计算货币总值,javascript,Javascript,我有一个表单,它使用javascript对它的值进行合计,在您输入一个包含美分的货币值之前,它可以正常工作,因此$2.99的值在合计中只显示2.00。 这是我的名片 功能多路复用器(行){ 变量此数量=行+“\u值1” var此价格=行+“\u值2” var this_extend=“extend”+行; document.getElementById(此扩展).value=(parseInt(document.getElementById(此数量).value)*parseInt(docume

我有一个表单,它使用javascript对它的值进行合计,在您输入一个包含美分的货币值之前,它可以正常工作,因此$2.99的值在合计中只显示2.00。 这是我的名片

功能多路复用器(行){
变量此数量=行+“\u值1”
var此价格=行+“\u值2”
var this_extend=“extend”+行;
document.getElementById(此扩展).value=(parseInt(document.getElementById(此数量).value)*parseInt(document.getElementById(此价格).value))|0;
求和();
}
功能费率行(行){
var this_payrate=“payrate”+行;
var this_hours=“hours”+行;
var this_subtot=“subtotal”+行;
document.getElementById(this_sublot).value=(parseInt(document.getElementById(this_payrate).value)*parseInt(document.getElementById(this_hours.value))|0;
getlabor();
}
函数求和(){
var materialcost=0
对于(var i=1;i
十进制值将仅显示为整数

然后不要使用
parseInt
,而是

十进制值将仅显示为整数

然后不要使用
parseInt
,而是。

只是一个注释:

只有在使用重载“+”运算符时,字符串数学才有问题。在计算中,可以使用:

document.getElementById(this_extend).value = document.getElementById(this_qty).value) * document.getElementById(this_price).value;
parseInt和parseFloat的唯一优点是,它们会修剪尾随的非数字值。在计算中使用用户输入之前,您应该先验证用户输入。

请注意:

只有在使用重载“+”运算符时,字符串数学才有问题。在计算中,可以使用:

document.getElementById(this_extend).value = document.getElementById(this_qty).value) * document.getElementById(this_price).value;

parseInt和parseFloat的唯一优点是,它们修剪尾随的非数字值。在计算中使用用户输入之前,您应该先验证用户输入。

Bergi我将其更改为parseFloat,但现在我的总数显示为29。4900000@jason-诀窍是使用整数小单位(例如美分),然后转换为大单位($)只是为了最后的展示。@RobG你在理解javascript方面给了我比我实际拥有的更多的信任。lol@Jason:查看和类似的问题-为了简单起见,您可以使用它。顺便说一句,不要忘记您正在处理这里的问题。@Bergi谢谢,我已经在grandtotal中使用了toFixed(2),但更改了此parseFloat(document.getElementById(id).value,10)到这个parseFloat(document.getElementById(id).value,100)实际上解决了我的问题。Bergi我把它改为parseFloat,但现在我的总数显示为29。4900000@jason-诀窍是使用整数小单位(例如美分),然后转换为大单位($)只是为了最后的展示。@RobG你在理解javascript方面给了我比我实际拥有的更多的信任。lol@Jason:查看和类似的问题-为了简单起见,您可以使用它。顺便说一句,不要忘记您正在处理这里的问题。@Bergi谢谢,我已经在grandtotal中使用了toFixed(2),但更改了此parseFloat(document.getElementById(id).value,10)到这个parseFloat(document.getElementById(id).value,100)实际上解决了我的问题。