今天的问题如下:我们在Oracle数据库中有一个表。该表包含一个Number(18,3)类型的字段。

从表面上看,保存和加载来自所述现场的数据都非常有效。但是,进一步的检查显示,其中包含三位小数的数字,例如从数据库中读取500.001,使得小数的字符串表示具有第四个零数字(例如500.0010)。只要第三个十进制数字非零,就会发生这种情况。

出于数学目的,这不是问题。但是,我们有验证器通过将十进制数字转换为字符串然后计算十进制数字来验证十进制数字的小数位数。由于这个特定的数据被定义为最多有三个十进制数字,因此额外的零会导致验证错误。

因为我无法更改验证器,所以除了将数字转换为字符串,修剪尾随零然后重新解析之外,我还想知道是否有一种干净的方法来获得没有额外零的小数。它?或者我应该做一些完全不同的事情?

有帮助吗?

解决方案

试试这个:

decimal trimmed = ((decimal)((int)(number * 1000))) / 1000

转换为int可以摆脱小数部分。您不需要所有括号,但我认为如果明确指出操作顺序,则更容易看到发生了什么。

其他提示

我遇到了同样的问题,但我使用了: number.ToString(" F3")

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top