Eval()中的计算

时间:2015-12-10 09:22:27

标签: c# webforms eval

我正在建立一个网站来显示产品和价格,我在计算中遇到了一些错误。

Screenshot of the DataList

<asp:Button ID="SellPrice1" 
          Visible="true" 
          BackColor="#9933FF" 
          Width="200px" 
          BorderStyle="solid" 
          BorderColor="#ffffff" 
          BorderWidth="0px"   
          ForeColor="white" 
          Font-Underline="false" 
          runat="server" 
          CommandArgument='<%# Eval("Barcode")%>' 
          CommandName="Add" 
          Text='<%# "Normal price: RM" + String.Format("{0:0.00}", Convert.ToInt32(Eval("SellPrice_1")) * 1.06, "{0:0.00}") %>' 
          Font-Size="12px" 
          Font-Bold="true"></asp:Button>

          <asp:Button ID="SellPrice2"
          Visible="true"
          BackColor="#9933FF"
          Width="200px"
          BorderStyle="solid"
          BorderColor="#ffffff"
          BorderWidth="0px"
          ForeColor="white" 
          Font-Underline="false"
          runat="server" 
          CommandArgument='<%# Eval("Barcode")%>'
          CommandName="Add" 
          Text='<%#  "Member price: RM" + Eval("SellPrice_2", "{0:0.00}") %>' 
          Font-Size="12px" 
          Font-Bold="true"></asp:Button>
  

第一件商品的价格:HEINZ SALAD CREAM ORIGINAL 285G(8.0189)

以上是我的源代码,以显示2个价格(正常价格,会员价格) 两个数据目前都有相同的数量。

正如大家们所见,我的正常价格包括税号,即 1.06 。 代码工作正常,但是当我使用计算器计算实际金额时,所有计算都是错误的,不包括第二个,即我附图所示的275.00。

所以我的问题是,我怎样才能确保所有计算都正确?如果我的信息不够清楚,请告诉我。

  

我发现我的问题实际上是计算四舍五入所有小数位,只计算金额。但我该如何解决这个问题呢?

1 个答案:

答案 0 :(得分:2)

对不起,我找到了解决方案,我会将其发布以供将来参考。

正如here所讨论的那样,他强迫数字为十进制数,例如,我也是这样做的数字是1.06,最后的结果就是这个

Text='<%# "Normal price: RM" + String.Format("{0:0.00}", Convert.ToDecimal(Eval("SellPrice_1")) * 1.06m) %>' 

正如您所注意到的,我首先Convert.ToDecimal计算包括小数位数。 然后我得到错误

Operator '*' cannot be applied to operands of type 'decimal' and 'double'

这就是我强迫数字的地方

  

1.06变为1.06m

最后我得到了我的最终结果。

再次抱歉遇到麻烦,感谢ИвоНедев为你的时间