@[blingbling天依酱](/space/show?uid=86830)
long double 在Dev-C++中只能cout
printf一般不好使
原因是Dev-C++的header认为long double是12Bytes的
但是printf却认为long double是8Bytes的
所以printf无法输出long double
这是Dev-C++一个已知的bug
by resftlmuttmotw @ 2019-08-11 09:54:06
@[blingbling天依酱](/space/show?uid=86830)
`long double`->`"%Lf"`
by WYXkk @ 2019-08-11 09:54:38
@[resftlmuttmotw](/space/show?uid=73992) 你在瞎扯吧。。。long double可以用`"%Lf"`输出
by WYXkk @ 2019-08-11 09:55:47
thx
by 中二病 @ 2019-08-11 09:56:00
@[WYXkk](/space/show?uid=130151)
我也是上网搜的嘛
要瞎扯也是那啥在瞎扯
谢谢
```cpp
%Lf
```
记住啦
by resftlmuttmotw @ 2019-08-11 09:58:19
# C++99中没有明确规定:
>sizeof(long double)>=sizeof(double)
## 而这种代码取决于编译器
在Windows下使用MinGW的TDM-GCC 4.9.2 32-bit Release进行测试,发现sizeof(long double)=12
## 可以得出long double在本地编译器上的大小为12个字节,比double多出4字节,可以存储96位二进制
### 进过多次测试,发现用cout输出long double是正确答案,并知道该题答案为4.125
>4.125的二进制是110.001是个6位数,发现double的指数长度与尾数冲突,因此结果(1<<31)时为-0,(1<<32)时为0
Linux下printf适配了long double,因此在Ubuntu18.04可以通过此代码
by daqirui @ 2019-08-11 10:23:38
@[blingbling天依酱](/space/show?uid=86830)
by daqirui @ 2019-08-11 10:24:00