和寄存器指令有关最开始。
最开始浮点数都是fpu计算,fpu寄存器都是80bits大小,不管float还是double,没有区别,指令也一样。
后来2000年前后,intel推广sse,引入xmm寄存器,遵从float/double的大小,使用不同的指令。这时的float才是真float。
所以fpu精度高,性能差。sse精度低,但性能高。
从vs2013开始,全部使用sse指令。之前版本x86使用fpu,x64使用sse。
这只是告诉你为啥x86和x64为啥不一致, 至于为何一个是17一个是18就需要看intel实现了。
另外,由于都使用sse,所以尽量用float计算,比double快了很多。
【 在 grainbuds 的大作中提到: 】
: 下面这段代码:
: float a = 1.8;
: int b = 110 * a / 11;
: ...................
--来自微水木3.5.11
--
FROM 140.206.195.*