1

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

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

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

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

4

2 回答 2

2

试试这个:

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

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

于 2009-11-27T07:52:20.683 回答
0

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

于 2015-01-20T22:43:17.007 回答