decimal 后面的后缀M的意思
来源:互联网 发布:ev3手机遥控软件 编辑:程序博客网 时间:2024/04/27 22:06
今天看个视频,看到个 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的意思
- decimal 后面的后缀M的意思
- decimal 后面的后缀M的意思
- xcode 左边导航栏中,类文件后面的标记“A”,"M","? "...的意思
- 各种后缀文件的意思
- STM32系列后缀的意思
- Xcode中类文件后面的M,A,?等符号,Xcode使用Git的符号表示的意思
- mysql 中decimal中去掉后面多余的0
- FlashPlayer 后缀的各种意思SA AX
- 去掉linux文本文件后面的^M
- iptables中的 -m tcp的意思
- cc2530后面的的DB,BB,EB代表什么意思?
- 函数声明时,名后面的const的意思
- 书名后面方括号里的字母代表什么意思
- java参数后面跟三个点所代表的意思
- int GetMonth( ) const throw( );后面的throw( )什么意思?
- test eax,eax 后面跟 jl 指令的意思
- java参数后面跟三个点所代表的意思
- Swift学习之十六:枚举(Enumeration)
- linux下查看线程数的几种方法
- [代码阅读]gem5 classic cache初步(2)
- LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- Hessian学习历程
- decimal 后面的后缀M的意思
- SOLIDWORKS高效建模实例(四)
- 【leetcode】Next Permutation
- spring+jdbc
- Request的getParameter和getAttribute方法的区别
- System Dump和Core Dump的区别
- 黑马程序员_学习笔记2——wpf计算器
- Java对数组的操作(二)—集合与数组的切换
- 根据特征拆分字符串函数