澳门威利斯人_威利斯人娱乐「手机版」

来自 办公软件 2019-06-01 08:40 的文章
当前位置: 澳门威利斯人 > 办公软件 > 正文

数据类型float到C,decimal的错误理解

前几日运作种类突然出错,数据类型转化无效,错误在system.data.sqlclient.get_decimal()方法,初叶估价是数据库的float类型调换为c#的decimal类型时出错了,实体类使用的是decimal?类型,心想正是数据库里的数值是空,也不可能出现改动错误啊。

柒) 在分层开辟中,关于实体类说法指鹿为马的是( BCD)。

直接很离奇C#的预约义数据类型中为啥加了二个decimal,有float和double不就够了吗?前几天来挖1挖。

网络百般寻觅,很几人遭遇类似情形,大多是一直去float类型时候出错,如(float)dr[0],后来看到有说应该是先转化成double,然后在中间转播成float就足以了

A. 实体层又叫做模板层

浮点型

Name

CTS Type

Description

Significant Figures

Range (approximate)

float

System.Single

32-bit single-precision floating point

7

±1.5 × 10−45 to ±3.4 × 1038

double

System.Double

64-bit double-precision floating point

15/16

±5.0 × 10 −324 to ±1.7 × 10308

若果我们在代码中写2个1二.3,编写翻译器会自行感觉这么些数是个double型。所以如果大家想内定12.3为float类型,那么您必须在数字前面加上F/f:
float f = 12.3F;

品味了瞬间把实体类的decimal?类型的字段改成double?类型,OK.

B. 数据库的Money类型对应实体类中float类型      

decimal类型

用作补充,decimal类型用来表示高精度的浮点数

Name

CTS Type

Description

Significant Figures

Range (approximate)

decimal

System.Decimal

128-bit high precision decimal notation

28

±1.0 × 10−28 to ±7.9 × 1028

从上表能够见见,decimal的有效位数异常的大,达到了二十几个人,不过表示的数量范围却比float和double类型小。decimal类型并不是C#中的基础项目,所以使用的时候会对计量时的属性有震慑。

咱俩得以像如下的艺术定义3个decimal类型的浮点数:
decimal d = 12.30M;

你可能感兴趣的稿子:

  • C#兑现公文与2进制互转并存入数据库
  • C#落到实处复制数据库 C#将A数据库数据转到B数据库

C. 数据库中byte类型对应实体类中的bool类型 

对decimal、float、double错误的认识

引用自: 中Ivony的评论

在正确总括中使用浮点数是特别惊险的,固然C#在浮点数运算时利用了繁多方式使得浮点数运算的结果看起来是不行正常的。但骨子里尽管不通晓浮点数的特色而鲁莽使用以来,将导致极其沉痛的隐患。  
   
  考虑上边包车型地铁言语:  
   
              double   dd   =   10000000000000000000000d;  
              dd   =   1;  
              Console.WriteLine   (   "{0:G50}",   dd   );   
    
  输出是哪些?谁知道?  
  输出是:1000000000000000000000000   
    
  那就是浮点数精度损失的难点,最要紧的是,在精度损失的时候,不会告诉任何的失实,也不会有任何的格外爆发。  
   
  浮点数的精度损失大概在多数地点现身,举例d   *   g   /   g   不鲜明等于d,d   /   g   *   g也不分明等于d。   
    
  还会有几个要命危险的错误认知!!  
   
  1、decimal不是浮点型、decimal不存在精度损失。
  下边有段程序咱们能够去探望结果是怎么着。记住!全部的浮点型变量都存在精度损失的标题,而decimal是贰个从头到尾的浮点型,不论它精度有多高,精度损失如故留存!  
   
                  decimal   dd   =   10000000000000000000000000000m;  
                  dd   =   0.1m;  
                  Console.WriteLine   (   "{0:G50}",   dd   );   
    
  贰、decimal所能储存的数比double大,从double到decimal的类型转变不会现身别的难点。
  微软在decimal的助手上确实要优质量检验查了。实际上唯有从整形到decimal的改动才是增添调换,decimal的精度比double大,但所能积攒的最大数却比double要小。

D. 变成表示层和数据库一定程度的紧耦合

 

实体类属性类型与数据库类型:

数据库类型            实体类属性类型


char                      

nchar

varchar                   string

nvarchar


int

smallint                   int

本文由澳门威利斯人发布于办公软件,转载请注明出处:数据类型float到C,decimal的错误理解

关键词: 澳门威利斯人 C# decimal