在十进制数据类型上强制两位小数

时间:2017-04-03 12:26:12

标签: c# sql devexpress

我正在处理的应用程序上有一个DAL,并且该类返回带有十进制数据类型的对象。我在应用程序前端显示某些值时遇到问题,因为它们是货币值。我已经看到了一些类似的问题,包括this one,它与我的问题非常相似,但没有任何内容与数据类型保持小数的情况相符。

首先问题是值被舍入,我通过编辑SP在SQL中解决了这个问题。现在值正确地通过,但我没有看到当值为“18.2”时强制第二个小数位的选项,例如,它应该显示“18.20”

更大的问题是DAL将这些值存储在列表中,然后列表绑定到DevExpress ASP网格。我使用DX格式化了值并且它没有影响:

<dx:GridViewDataTextColumn FieldName="TotalAmountDue" VisibleIndex="5" Width="10%">
    <PropertiesTextEdit DisplayFormatString="#,###.##" />
</dx:GridViewDataTextColumn>

这里最好的方法是什么?

2 个答案:

答案 0 :(得分:1)

为什么不试试String.Format

它的工作原理如下:

decimal yourPrice=GetPriceFromDb(); //50.2 for example 

txtYourPrice.Text = string.Format("{0:0.00}", Math.Round(yourPrice, 2));

txtYourPrice.Text中显示的结果将为50.20

答案 1 :(得分:1)

如果你有可变长度的数字,但想要千位分隔符,并且你想在小数分隔符之前强制至少一个数字,在它之后强制2,请使用:

#,0.00

实施例

.1变为0.10

18.2变为18.20

99变为99.00

1234.1 beomes 1,234.10

编辑:忘了提及舍入

这将舍入到最接近的小数位,因此0.99991将显示为1.00