zoukankan      html  css  js  c++  java
  • oracle 的 nubmer 类型与 C# 的 float double decimal 对应关系

    如果先有oracle 数据的情况下,怎么对应到C#中的类型。

    在oralce 中

    在dba_tab_columns表中,

    Data_type表示字段类型;
    Data_length表示字段类型的长度;
    Data_Precision表示字段类型的精度的总长度,如果为null,表示精度的总长度不固定,最长为Data_Length;
    Data_scale表示字段类型的精度范围,如果为0,表示只能存储为整数,
    如果为null,表示可以存储整数或者浮点数,浮点数位数不确定,
    如果为整数,表示存储的精度位数。

    查询dba_tab_columns表,发现tab表中ID0字段类型int已经被转换为number(22)。

    参考:http://blog.csdn.net/ojuju10/article/details/4576446

    在c#中

    float 类型可表示精度为 7 位、在大约 1.5 × 10−45 到 3.4 × 1038 的范围内的值。

    double 类型可表示精度为 15 位或 16 位、在大约 5.0 × 10−324 到 1.7 × 10308 的范围内的值。

    decimal 类型是 128 位的数据类型,适合用于财务计算和货币计算。decimal 类型可以表示具有 28 或 29 个有效数字、从 1.0 × 1028 到大约 7.9 × 1028 范围内的值。

    int 类型表示有符号 32 位整数,其值介于 -2147483648 和 2147483647 之间。(10位)
    long 类型表示有符号 64 位整数,其值介于 -9223372036854775808 和 9223372036854775807 之间。(19位)

    所以:

    最大兼容原则

    如果 scale 为null  用 decimal 

    如果 scale>0

       Precision 为 null 用 decimal

       Precision <=7  用 float

       Precision >7  而且  Precision <=15  用 double

       Precision >15 用 decimal

    如果 scale==0

    Precision 为 null 用 long

    Precision <=9  用 int

    Precision > 9  而且  Precision <=19  用 long

    根据具体业务数据,可以考虑用decimal。

  • 相关阅读:
    C++ XML解析之TinyXML篇[转]
    TinyXML:一个优秀的C++ XML解析器[转]
    nginx 出现413 Request Entity Too Large问题的解决方法
    redis配置认证密码
    《Discuz安装时候出现乱码 -- 问题解决方法》
    MySQL创建用户与授权
    CentOS 7 安装mysql
    setfacl命令 来自: http://man.linuxde.net/setfacl
    install pip3 for python 3.x
    自己制作ssl证书:自己签发免费ssl证书,为nginx生成自签名ssl证书
  • 原文地址:https://www.cnblogs.com/goodfulcom/p/5333206.html
Copyright © 2011-2022 走看看