[問題] double印出的問題
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
dev C++
又是一個笨問題.. 我在測試的時候
printf("%f",123.4L);
結果竟然跑出一堆數字..
-18137553330312606000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000.000000
為什麼呢??改成printf("%lf",123.4L)
也是一樣...是寫法有問題嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.240.38.150
※ 編輯: sunlights 來自: 111.240.38.150 (01/18 13:33)
→
01/18 13:39, , 1F
01/18 13:39, 1F
我希望得到123.400000
→
01/18 13:41, , 2F
01/18 13:41, 2F
看起來好像window上的C compiler 對long沒支援..
可是
long double n;
scanf("%lf" , &n);
printf("%lf\n" , n);
當我輸入123.4是可以正確印出123.400000
連結中的那一篇有寫不能支援80bit以上..
this library has no support for 80bits long double
(microsoft C compiler use 64 bits long double for various reasons).
是否long double 使用80bit呢??(延伸雙精確度)
那long float 也是使用43bit(延伸單精確度)嗎??
但很多教學文章裡都沒有提到long float應該是沒有這個型態....
※ 編輯: sunlights 來自: 111.240.38.150 (01/18 14:16)
→
01/18 14:40, , 3F
01/18 14:40, 3F
→
01/18 14:41, , 4F
01/18 14:41, 4F
→
01/18 14:41, , 5F
01/18 14:41, 5F
如果dev-c++是80bit那就表示連結中的解釋不成立
那為什麼printf("%lf",123.4);
的時候不會正確顯示呢??
※ 編輯: sunlights 來自: 111.241.53.151 (01/18 18:22)
→
01/18 18:44, , 6F
01/18 18:44, 6F
→
01/18 19:38, , 7F
01/18 19:38, 7F
→
01/18 19:38, , 8F
01/18 19:38, 8F
→
01/18 19:43, , 9F
01/18 19:43, 9F
→
01/18 19:55, , 10F
01/18 19:55, 10F
那你們測printf("%lf",123.4);
的時候是多少呢??
※ 編輯: sunlights 來自: 111.240.36.1 (01/18 21:09)
→
01/18 21:33, , 11F
01/18 21:33, 11F
→
01/18 21:33, , 12F
01/18 21:33, 12F
→
01/18 21:34, , 13F
01/18 21:34, 13F
→
01/20 00:56, , 14F
01/20 00:56, 14F
→
01/20 00:56, , 15F
01/20 00:56, 15F
→
01/20 02:38, , 16F
01/20 02:38, 16F
→
01/20 02:40, , 17F
01/20 02:40, 17F
→
01/20 02:40, , 18F
01/20 02:40, 18F
→
01/20 02:53, , 19F
01/20 02:53, 19F
→
01/20 02:55, , 20F
01/20 02:55, 20F
→
01/20 02:56, , 21F
01/20 02:56, 21F
→
01/20 02:57, , 22F
01/20 02:57, 22F
→
01/20 03:06, , 23F
01/20 03:06, 23F
→
01/20 03:07, , 24F
01/20 03:07, 24F
→
01/20 03:09, , 25F
01/20 03:09, 25F
→
01/20 03:09, , 26F
01/20 03:09, 26F
→
01/20 03:26, , 27F
01/20 03:26, 27F
好吧..我改成Lf
long double n=123.4L;
printf("%Lf",n);
結果一樣是-18137553330310773000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000
0000.000000為什麼??
※ 編輯: sunlights 來自: 111.240.9.91 (01/20 18:47)
→
01/20 19:27, , 28F
01/20 19:27, 28F
→
01/20 22:17, , 29F
01/20 22:17, 29F
→
01/20 22:19, , 30F
01/20 22:19, 30F
→
01/20 22:21, , 31F
01/20 22:21, 31F
→
01/20 22:27, , 32F
01/20 22:27, 32F
→
01/20 22:27, , 33F
01/20 22:27, 33F
推
01/20 22:29, , 34F
01/20 22:29, 34F
→
01/21 22:12, , 35F
01/21 22:12, 35F
→
01/21 22:13, , 36F
01/21 22:13, 36F
→
01/21 22:14, , 37F
01/21 22:14, 37F
→
01/21 22:15, , 38F
01/21 22:15, 38F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章