我必须操纵十进制计算。所有数据都已经在客户端,操作正在通过用户交互(选择)而改变。所以我肯定可以去服务器进行每个用户选择更改,但这是耗时的工作和额外的复杂性。
我开始在客户端操纵十进制计算,我抛出了全球化解析问题。我也害怕服务器端的十进制计算可能不等于客户端处理结果。
所以简单地说,最好在服务器端计算十进制值,或者只是出于显示目的而通过JavaScript计算它没有任何问题?
答案 0 :(得分:1)
这就像在进行添加时询问科学计算器是否优于普通计算器。
是的,没关系,但要谨慎行事。 JS有一个关于不精确小数的已知问题。据我所知,人们以“美分”(整数)计算,然后将其除以100为“美元”(浮点数/小数)。
当然你也应该在事后进行验证。众所周知,人们不能轻易信任客户端的投入。
答案 1 :(得分:1)
首先,在处理货币时,总是在整数中工作。如果你是以美元工作,那就乘以100而不是美分。无论您的货币是什么,都可以以最小的金额为单位工作。
这将消除任何舍入错误的可能性。
只有在你得到便士的最终价值之后,再把它除以100(或更好地使用字符串操作)才能以最精确的方式呈现它。
这将保证客户端和服务器获得相同的结果。