玄学求助

P1365 WJMZBMR打osu! / Easy

@[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


|