浮点数指令
早期计算机根本没有浮点数处理ALU,浮点数靠软件整数去模拟,性能极低。后来,加入了浮点数FPU,浮点数处理速度极大提升,比如xmm寄存器。最早有FPU功能是intel的8087处理器。
- double f = 2.25; // IEEE 754内存存储
- 00501056 movsd xmm0,mmword ptr [__real@4002000000000000 (0502108h)]
Decimal类型
decimal中文为十进制和小数。C#、VB.NET和SQL语言都有定义Decimal类型,主要目的为了表示带小数点的数值更精确,一般存储超过double的8个字节,用16字节。具体存储结构内部,会采用单独存储整数值、符号位和小数部分,具体取决于实现。
- C# decimal是128位十进制浮点数,有效数字在28位左右,后缀是m或者M.
Decimal计算速度
- 因为Decimal保存相对复杂,计算速度比普通浮点数要慢。
哪些编程语言在用Decimal类型?
IEEE 754标准
IEEE 754是IEEE二进制浮点数算术标准(IEEE Standard for Floating-Point Arithmetic)的简称,于1985年首次发布,并在后续的1987年、2008年和2019年进行了修订。这是由国际电气和电子工程师协会(Institute of Electrical and Electronics Engineers,IEEE)制定的一种浮点数运算标准,也是20世纪80年代以来最广泛使用的浮点数运算标准,被许多CPU与浮点运算器所采用。大部分编程语言都采用IEEE 754标准作为浮点数标准,C语言诞生比它还早,后面也是采用此标准。
IEEE 754起源于intel公司
IEEE 754起源于intel公司
1980年,intel公司发布8087浮点数协处理器,它对浮点数的设计还算不错,被IEEE采纳为标准。它设计了3块,符号位、指数域和分数值。本质上是在较小的空间,如4字节或8字节,分成不同位域,存储更多数值的讯息,避免用一个字节表示十进制浮点数一位,造成空间浪费。
若文章对您有帮助,欢迎关注。助您在编程路上越走越好!
微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。
我是程序员小迷(致力于C、C++、Java、Kotlin、Android、iOS、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。