javascript写和舍入失败

时间:2014-01-20 17:47:59

标签: javascript html

我在HTML文档中将变量列为%SUBTOTAL%,如果我只是将%SUBTOTAL%替换为数字,在本例中为“551,313.46”。 如果我写这个:

<script type="text/javascript">document.write(%SUBTOTAL%);</script>

它被替换为“551313.46”
我想用这个数字进行基本的数学运算但是我试图将它乘以2

<script type="text/javascript">document.write(%SUBTOTAL%*2);</script>

我刚刚得到这个“551626.92”所以,只有在昏迷之后的数字乘以2,我怎样才能得到整数?

4 个答案:

答案 0 :(得分:3)

这里的问题是数字中的逗号不是数千个分隔符,而是operator

浏览器看到的是

(expresion 1), (expression 2)

你不能吐出这样的数字并让它发挥作用。您需要删除逗号以进行操作。

使用代码看起来像某些浏览器允许你将多个参数传递给document.write并将它们写出来

document.write("A","B","C","D");

导致ABCD被写出,这就是你看到结果的原因。

这样的事情会起作用

document.write(parseFloat("%SUBTOTAL%".replace(/,/g,"")*2));

如果您希望再次插入逗号,则需要添加代码以插入它。

答案 1 :(得分:1)

逗号将您的号码拆分为两个单独的值,这些值作为单独的参数传递给document.write。解决方案是删除逗号。最好的解决方案是改变服务器端。

如果你绝对必须,你可以修改你的代码,以便JavaScript删除它。

document.write("%SUBTOTAL%".replace(/[^0-9.]/g,'') * 2);

/[^0-9.]/g将匹配非0-9或句点的所有字符。用空字符串替换它们以将其移除。乘以2会将字符串转换为数字并乘以。

答案 2 :(得分:0)

这在javascript中不是问题,在您使用的任何服务器端语言中都存在问题。您需要确保将%SUBTOTAL%格式化为数字,而不是字符串。

以下是当前传递给前端代码的内容:551,313.46

当你乘以2时,它显示为:551,313.46*2

您应该在SERVER SIDE代码中使用ParseFloat函数或类似函数,希望这个函数可以说明逗号。由于这是服务器端的字符串,您可能只能使用字符串替换函数a-la SUBTOTAL.replace(',','')删除逗号,但在显示服务器端代码之前,实际上没有办法有效地回答这个问题。

如果你在客户端做这件事已经死定,没有向我们提供你的服务器端来源,并且迫使我们猜测你的问题;这是一个非常糟糕的黑客来解决你所看到的问题:

尝试使用引号包裹%SUBTOTAL%document.write(ParseFloat("%SUBTOTAL%")*2)

答案 3 :(得分:-1)

尝试做类似document.write(parseFloat(%SUBTOTAL%)* 2)