通过javascript在客户端进行价格(十进制)计算是安全的吗?

时间:2012-05-26 22:28:52

标签: javascript .net web decimal

我必须操纵十进制计算。所有数据都已经在客户端,操作正在通过用户交互(选择)而改变。所以我肯定可以去服务器进行每个用户选择更改,但这是耗时的工作和额外的复杂性。

我开始在客户端操纵十进制计算,我抛出了全球化解析问题。我也害怕服务器端的十进制计算可能不等于客户端处理结果。

所以简单地说,最好在服务器端计算十进制值,或者只是出于显示目的而通过JavaScript计算它没有任何问题?

2 个答案:

答案 0 :(得分:1)

这就像在进行添加时询问科学计算器是否优于普通计算器。

是的,没关系,但要谨慎行事。 JS有一个关于不精确小数的已知问题。据我所知,人们以“美分”(整数)计算,然后将其除以100为“美元”(浮点数/小数)。

当然你也应该在事后进行验证。众所周知,人们不能轻易信任客户端的投入。

答案 1 :(得分:1)

首先,在处理货币时,总是在整数中工作。如果你是以美元工作,那就乘以100而不是美分。无论您的货币是什么,都可以以最小的金额为单位工作。

这将消除任何舍入错误的可能性。

只有在你得到便士的最终价值之后,再把它除以100(或更好地使用字符串操作)才能以最精确的方式呈现它。

这将保证客户端和服务器获得相同的结果。