Javascript国际计算

Javascript international calculations?

本文关键字:计算 Javascript      更新时间:2023-09-26

我有一个javascript函数,它从一个表单中的文本字段中获取三个值,对它们求和,并在表单中显示总和:

function sumVals(theForm) {
    var sum = 0.0;
    sum += parseFloat(theForm.val01.value);
    sum += parseFloat(theForm.val02.value);
    sum += parseFloat(theForm.val03.value);
    theForm.sumvals.value = sum.toNiceFixed(4);
}

该函数在任何英文操作系统的计算机上都可以正常工作。例如,如果我在表单中为val01、val02和val03输入0.2、0.4和0.4的值,sumvals字段将显示1.000

但是,在具有意大利语或德语操作系统的计算机上,如果我在表单中为val01、val02和val03输入相同的值0.2、0.4和0.4,sumvals字段将显示10000.000

我认为这与一些非英语操作系统解释数字中的句号和逗号的方式有关。但是,如果我在文本字段中输入值(例如0,4)时尝试用逗号代替句号,则一旦我将焦点从它移开,该字段就会切换到0。

我已经检查了一堆处理javascript的i18n网站,但我找不到任何处理这个特定问题的东西,或者至少我没有认识到它是这样的。

谁能帮助我与一个解决方案,将很容易地解释javascript变量在操作系统的本地语言(如果这真的是问题)?

function toFloat(value) {
  return parseFloat(value.replace(',','.'));
}
function sumVals(theForm) {
  var sum = 0.0;
  sum += toFloat(theForm.val01.value);
  sum += toFloat(theForm.val02.value);
  sum += toFloat(theForm.val03.value);
  theForm.sumvals.value = sum.toNiceFixed(4);  
}