在C#语言中,float、double以及decimal类型都可以用来表示小数,但三者还是有一定的不同,有效数字为相比的话,decimal类型的有效数字最大,float类型最小。计算浮点类型的运算,如果只有float和double类型选择的话,建议选择double类型,计算误差相对小一些。如果是涉及到财务或者货币金额等金融计算,建议使用十进制decimal类型,decimal的有效位数很大,达到了28位,可以保证计算结果更为精准。

针对这3种类型,其中float和double为基础类型,而decimal不是。

float类型:单精度浮点类型  32bit。有效数字7位,范围 ±1.5 × 10E−45 to ±3.4 × 10E38

double类型:双精度浮点    64bit。有效数字15/16 位,范围 ±5.0 × 10 E−324 to ±1.7 × 10E308

decimal类型:此类型为高精度类型,128bit,浮点型。范围 ±1.0 × 10E−28 to ±7.9 × 10E28

其中上述表达式中,E表示几次方的意思。

decimal类型表示的数字范围比float和double小,但计算结果误差比上述两者小,一般需要高精度小数运算或者金融财务货币计算的时候,都会选择decimal类型来存储变量值以及运算结果。

备注:原文转载自博主个人站IT技术小趣屋,原文链接为C#中float、double以及decimal类型有何不同_IT技术小趣屋

【转载】 C#中float、double以及decimal类型有何不同的更多相关文章

  1. float,double和decimal类型

    float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位) double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E308(15个有 ...

  2. [转]float,double和decimal类型

    float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位) double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E308(15个有 ...

  3. Java中float/double取值范围与精度

    Java浮点数 浮点数结构 要说清楚Java浮点数的取值范围与其精度,必须先了解浮点数的表示方法,浮点数的结构组成,之所以会有这种所谓的结构,是因为机器只认识01,你想表示小数,你要机器认识小数点这个 ...

  4. java中float/double浮点数的计算失精度问题(转)

    如果我们编译运行下面这个程序会看到什么? public class Test  {    public static void main(String args[]) {                ...

  5. C#中float, double的精度问题

    在工作中我发现了一个C#浮点数的精度问题,以下的程序运行结果并未得到我预期的结果: view source print? 01 namespace FloatTest 02 03     class ...

  6. 神奇:java中float,double,int的值比较运算

    float x = 302.01f;    System.out.println(x == 302.01); //false  System.out.println(x == 302.01f); // ...

  7. 打印出C# 中float ,double 在内存中的存放形式

    float floatA = 2.2f; ); ; i < ;++i ) { uint temp = 0x80000000 & (a << i); ) { Console.W ...

  8. 关于float /double、string类型的hash函数/hash表实现(转)

    #include <ext/hash_map> #include <math.h> #include <stdio.h> using namespace std; ...

  9. golang中float类型转换成int类型

    package main import ( "fmt" "strconv" ) func f2i(f float64) int { i, _ := strcon ...

随机推荐

  1. 浅析String.intern()方法

    1.String类型“==”比较样例代码如下:package com.luna.test;public class StringTest { public static void main(Strin ...

  2. 转:goproxy和go modules的初步使用

    转:https://blog.csdn.net/qq_42403866/article/details/93654421 go module 管理比较方便. 启用: export GO111MODUL ...

  3. Java13新特性 -- ZGC:取消使用未使用的内存

    在JDK 11中,Java引入了ZGC,这是一款可伸缩的低延迟垃圾收集器,但是当时只是实验性的.号称不管你开了多大的堆内存,它都能保证在 10 毫秒内释放 JVM ,不让它停顿在那.但是,当时的设计是 ...

  4. 014-交互式Shell和shell脚本获取进程 pid

    Linux 的交互式 Shell 与 Shell 脚本存在一定的差异,主要是由于后者存在一个独立的运行进程 1.交互式 Bash Shell 获取进程 pid 在已知进程名(name)的前提下,交互式 ...

  5. Oracle中使用Table()函数解决For循环中不写成 in (l_idlist)形式的问题

    转: Oracle中使用Table()函数解决For循环中不写成 in (l_idlist)形式的问题 在实际PL/SQL编程中,我们要对动态取出来的一组数据,进行For循环处理,其基本程序逻辑为: ...

  6. QByteArray数据进行CRC32校验时产生的随机结果

    QT中使用QByteArray来存放了C++中的char数组. 两端使用相同的crc32进行校验,QT中却产生了随机的校验结果, C++端产生唯一的正确校验结果. 查看QByteArray相关资料,未 ...

  7. 搭建Portainer可视化界面(转)

    转载地址:https://blog.csdn.net/u011781521/article/details/80469804 一.什么是Portainer? Portainer是Docker的图形化管 ...

  8. lnmp+discuz使用redis缓存(待进一步研究)

    一直说Redis.Redis缓存.一直不清楚怎么用.于是花点时间研究了一下,但是还没搞懂.先把大概内容记录一下,待后续继续学习 1.首先部署lnmp环境,这个我的博客有些,请自行搜索 2.给php添加 ...

  9. win7安装 nodejs,npm

    1. 下载地址:http://nodejs.org/dist/v9.7.1/ 2. 安装 3. 查看是否安装成功,命令行查询 node  -v 4. 默认已经安装了npm,直接查询版本 5. 配置np ...

  10. redis 简单教程

    一.redis的安装 安装环境:centos 7 1) 下载redis 这里我们下载的是redis-4.0.10.tar.gz 2)将redis tar包移动至 /usr/local 执行如下命令 c ...