今天看个视频,看到个 decimal q=123123.123123M,有个后缀M,查了半天查了这个结果

C#与Java一样,都支持了float与double这两种浮点数的基础型别。这两种浮点数的型式皆为A*Base^Exp,其中A是浮点数的尾数(mantissa),Base是基底,而Exp则是指数部份。这意谓该浮点数的值为A乘上基底的Exp次方。关于浮点数的设计,于数值方法或数值分析的课程中皆会探讨,本处则不必细言。透过上次的设计虽然可以表示极大范围的实数,但是由于实数是连续的,其实有无限多个,所以无论如何以数字的方式表示实数,都有其极限。当利用浮点数来表示某个实数时,若该浮点数表示法无法表示时,会进行进位(rounding)的动作,进位后难免产生误差(rounding error)。尤其人皆采十进制思考运算,但float与double皆以2为基底,可想而知的是,透过这种方式来表示浮点数,会有许多看起来以十进制可以表示的小数,以2为基底时却发生了进位误差。C#引入了一个名为decimal的型别,而decimal型别存在的最大原因就是要降低进位误差,因为它的基底采取的是10而非2。请参考下例:

double d = 0.12345678901234567890123456789;
    decimal m = 0.12345678901234567890123456789m;
    Console.WriteLine(d);
    Console.WriteLine(m);

其中decimal m行宣告了一个decimal型别的变量,而之后的0.12345678901234567890123456789数值常数后加上m(也可写成M),是在C#中用来表示该常数为decimal型别之用。如同float常数需加上d(也可写成D)一般。在这个例子中,d与m皆被指派了相同的常数值,但实际印出的结果却如下:

0.123456789012346
    0.1234567890123456789012345679

两个数值都发生了进位的误差,但可以观察出以decimal型别表示十进制的数字,其进位误差小多了。而降低进位误差的代价,就是付出(也同时浪费)储存的空间,以及运算的速度。

转至于http://blog.sina.com.cn/s/blog_4dabb12801000anp.html

decimal 后面的后缀M的意思相关推荐

  1. PowerShell学习笔记(1)-基础

    PowerShell学习笔记(1):基础   前段时间在知乎上得知Windows下的一款强大的命令行工具PowerShell(原谅我刚刚得知). 其强大的功能,令人惊叹,兴趣盎然,这么优秀的工具值得我 ...

  2. Mysql 存储过程实现订单流水号

    存储过程实现流水号 存储过程 实现效果:SHHP201806080002 前缀编码--prefixStr 'SHHP' 后缀编码长度-- suffixCodeLength 长度4 (0002) 日期字 ...

  3. 国开计算机组成原理边学边练,国家开放大学-计算机组成原理-形考任务-2017全部答案.docx...

    国家开放大学-计算机组成原理-形考任务-2017全部答案.docx 一.单项选择题(每小题6分,共36分)题目1.下列数中最小的数是 B .选择一项A. (1010011)2B. (42)8 正确C. ...

  4. decimal(C# 参考)

    decimal(C# 参考) decimal 关键字表示 128 位数据类型. 同浮点型相比,decimal 类型具有更高的精度和更小的范围,这使它适合于财务和货币计算. decimal 类型的大致范 ...

  5. python decimal 转 float_python教程之二python数学运算

    存储数据变量 #两个变量交换值,通过第三个参数实现 print('两个变量交换值,通过第三个参数实现'); #第一种方法是通过第三个参数实现 x=5;#变量赋值 y=11; #变量赋值 print(' ...

  6. 英语词根、词根、前缀、后缀大全

    文章来源:http://www.hudong.com/wiki/%E8%8B%B1%E8%AF%AD%E8%AF%8D%E6%A0%B9%E3%80%81%E8%AF%8D%E6%A0%B9%E3%8 ...

  7. C#基础 uint,long,ulong,float,decimal 定义并初始化

     .NET Framework : 4.7.2        IDE : Visual Studio Community 2019         OS : Windows 10 x64     ty ...

  8. C# int uint long ulong byte sbyte float double decimal 范围,及类型!

    C# int uint long ulong byte sbyte float double decimal 范围,及类型! static void Main(string[] args){Conso ...

  9. 英语前后缀大全 - 快速理解英语单词

    作为程序员离不开和英语单词打交道,而基础弱的人面对庞大的单词量只会望而却步.收集了大量英语前后缀,用以帮助快速理解英语单词! 前缀 一. 表示否定的前缀 dis-加在名词.形容词,动词之前. disa ...

最新文章

  1. cartographer 配置过程
  2. java 图像 截取正方形,Instagram API仅返回正方形(裁剪)图像
  3. python培训好学吗-Python爬虫培训好学吗?
  4. 互联网数据中心安全管理方案
  5. [SDOI2015]星际战争
  6. Linux下git使用
  7. hibernate mysql 性能_MyBatis和Hibernate相比,优势在哪里?
  8. Qt工作笔记-QTableWidget设置委托(使用QStyledItemDelegate画3只小猪)
  9. 成为java架构师需要具备那些技能?
  10. 名企面试官精讲典型编程题之数据结构字符串篇
  11. Kaggle酒推荐,winemag-data-130k-v2.csv
  12. 爱希ISee人体感应器,雷达人体存在探测应用,毫米波雷达技术方案
  13. 海外服务器配置多少带宽比较合适?
  14. vios 多 vlan设置
  15. 解决微信小程序银行卡号输入转换格式
  16. html去除图片链接边框及其链接虚线
  17. Func:统一网络控制器
  18. 如何用python画一束花_如何在AI里绘制一束春天的花朵
  19. Part 9 常微分方程基础与常见方程求解法
  20. dns服务期搭建使用_DNS服务器的搭建与使用详解

热门文章

  1. Java千问:开发Java程序为什么要配置环境变量?
  2. C中fread()函数的建议使用方法
  3. git 连接远程仓库并推送代码
  4. [C语言]逆序一个字符串的内容
  5. 网络地址不在同一网段能通信吗
  6. zookeeper四字监控命令
  7. 论文笔记:BING and BING++(论文+程序)
  8. 高等代数:4 矩阵的运算
  9. ixgbe 驱动安装
  10. 从外包到拿下阿里 offer,这 2 年 5 个月 13 天到底发生了什么?