代码之家  ›  专栏  ›  技术社区  ›  Brian

将.NET浮点数据类型映射到Oracle NUMER(P,S)列

  •  4
  • Brian  · 技术社区  · 16 年前

    我正在编写的.NET应用程序需要存储.NET float , double decimal Oracle数据库中的数据类型。在Oracle中定义数字列类型时,必须指定数字的精度和小数位数:

    NUMBER(p,s)

    p 是精度,或总位数。Oracle保证数字的可移植性,精度从1到38。

    s 小数点右边的小数位数。刻度范围从-84到127。

    作为一个懒惰的程序员,我松散地使用“程序员”这个头衔,我希望其他人已经花了时间来找出好的 数量(p,s) float、double和decimal.NET数据类型的默认值?

    2 回复  |  直到 8 年前
        1
  •  3
  •   Paul-Jan    16 年前

    如果您使用的是Oracle的最新版本,那么您可能需要考虑改用BINARY\u FLOAT或BINARY\u DOUBLE(对于.net floats/doubles)。它们使用相同的IEEE二进制表示法,因此在与数据库格式进行转换时不会丢失数据。

    NET十进制数的最大精度是28,因此定义精度更高的Oracle数字是没有用的。

        2
  •  2
  •   DCookie    16 年前

    把(p,s)看作是对数据的编辑检查。通过指定它们,您可以在量级和精度方面约束数据。在内部,它们与Oracle相同:数字列的大小与数字(p,s)列的大小相同。

    p和s的选择更多地取决于应用程序约束,而不是其他约束。