2

我将 mvc3 与 c# 语言一起使用,但我遇到了计算问题。这里我对 3 个属性 Qty、Cost 和 totalprice 使用双类型变量

这里总价格=数量*成本;

我有要求获得不带小数的产品总价格。例如,如果数量=14.3,成本=15。然后在 java script/C# 上我会得到总价 214.5

但我需要 214。为了解决这个问题,我使用 Math.Floor(214.5) 得到 214。但是当 Qty=18.9 且成本=1500 时。然后在 javascript 或 C# 乘法上,我得到总价格 = 28349.999999999996,正确的结果应该是 28350。请帮助我获得可以准确获得两个结果的解决方案

4

3 回答 3

2

在c#中根据你选择。

-3        -2        -1         0         1         2         3
 +--|------+---------+----|----+--|------+----|----+-------|-+
    a                     b       c           d            e

                       a=-2.7  b=-0.5  c=0.3  d=1.5  e=2.8
                       ======  ======  =====  =====  =====
Floor                    -3      -1      0      1      2
Ceiling                  -2       0      1      2      3
Truncate                 -2       0      0      1      2
Round (ToEven)           -3       0      0      2      3
Round (AwayFromZero)     -3      -1      0      2      3

在 javscript 中这样做:

var qty=qty.toFixed(1);
var cost=cost.toFixed(1);
var totalprice=Math.round(qty*cost);
于 2013-03-11T06:42:52.260 回答
1

你可以使用 Math.round(); 这解决了你的问题。

Math.round(214.5- .1);
于 2013-03-11T06:42:47.850 回答
1

这个问题在这里已经有了答案:Javascript 浮动计算错误

您可以使用 toFixed() 例如: (1.2 - 1).toFixed(1) * 1 // 0.2

于 2013-03-11T06:46:10.987 回答