MinGWでlong double型をprintfで表示させる方法 » 履歴 » バージョン 1
開発 次郎, 2025/05/04 00:15
| 1 | 1 | 開発 次郎 | h1. MinGWでlong double型をprintfで表示させる方法 |
|---|---|---|---|
| 2 | |||
| 3 | 30!を表示させるmain.cppで、long double型を正しく表示されないことがある。 |
||
| 4 | |||
| 5 | 正確には「265252859812191058647452510846976.000000」と表示されるはずだが、 |
||
| 6 | 「0.000000」と表示されてしまう。 |
||
| 7 | |||
| 8 | MinGWだと内部でWindowsのruntimeで出力しようとしているのが原因っぽい。 Windowsだとsizeof(long double) == 8だけど、MinGWのgccだとsizeof(long double) == 16だから不整合が起きる。 |
||
| 9 | |||
| 10 | |||
| 11 | h2. 参考情報 |
||
| 12 | |||
| 13 | * 解決策 |
||
| 14 | ** https://hiziriai.hatenablog.com/entry/2018/05/02/231306 |
||
| 15 | ** https://stackoverflow.com/questions/4089174/printf-and-long-double#4089220 |
||
| 16 | * 解決しなかった方法 |
||
| 17 | ** コンパイルオプション(-ansi)では解決しなかった |
||
| 18 | ** https://teratail.com/questions/181188 |