[問題] 浮點數位數的存取(求救)

看板C_and_CPP (C/C++)作者 (海蛇)時間15年前 (2010/12/03 00:16), 編輯推噓7(7021)
留言28則, 8人參與, 最新討論串1/1
C++的語法 請問大大要如何控制變數存取小數的位數? 例如: int a,b; cin>>a;//a輸入3.14159好了 接下來我該如何將a丟到b中只留下3.14 b=(?)a //b這時候是3.14 請教各位大大我該如何做? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.253.109.40

12/03 00:17, , 1F
int a 怎麼輸入3.14159...
12/03 00:17, 1F

12/03 00:17, , 2F
double a; cin >> a; cout << setprecision(2) << a;
12/03 00:17, 2F

12/03 00:18, , 3F
去查表頭檔 iomanip 裡面有什麼東西
12/03 00:18, 3F

12/03 00:20, , 4F
type打錯了 用float,double隨便 我沒有打算要cout出來
12/03 00:20, 4F

12/03 00:20, , 5F
請問有沒有別的方式|
12/03 00:20, 5F

12/03 00:21, , 6F
話說回來,3.14可以存得很精確嗎...?
12/03 00:21, 6F

12/03 00:22, , 7F
就是不需要太精確
12/03 00:22, 7F

12/03 00:22, , 8F
a = a*100.0; int c = (int)a; a = c / 100.0; 我不確定
12/03 00:22, 8F

12/03 00:23, , 9F
你似乎是需要 floor, ceil 之函數.
12/03 00:23, 9F

12/03 00:23, , 10F
那假設今天我並不知道a小數會到第幾位這樣就不能直接用*100
12/03 00:23, 10F

12/03 00:24, , 11F
float pi = 3.14159; float b = (int)(pi*100)/100.0;
12/03 00:24, 11F

12/03 00:25, , 12F
另就是 p 大方式,那是無條件捨去,四捨五入可參考:
12/03 00:25, 12F

12/03 00:25, , 13F
a=a*100+0.5, 其餘方式均和 p 大同.
12/03 00:25, 13F

12/03 00:26, , 14F
p 大的方式我看懂了 這方法還不錯 感謝!!!
12/03 00:26, 14F

12/03 00:27, , 15F
Orz 我打完才發現慢2分
12/03 00:27, 15F

12/03 00:29, , 16F
另外不知道位數的話去參考浮點數的儲存格式, 用 and F
12/03 00:29, 16F

12/03 00:30, , 17F
FF000 之類的遮罩把存小數的部分濾掉即可
12/03 00:30, 17F

12/03 00:31, , 18F
仔細想想,比如十進位 123.0 / 100.0 得到的 1.23 不管怎
12/03 00:31, 18F

12/03 00:31, , 19F
樣用IEEE-754存二進位時,都只能得到近似值,不能精準。
12/03 00:31, 19F

12/03 00:32, , 20F
其實這就是我在六樓提的問題 不過原po好像不太在意 XD
12/03 00:32, 20F

12/03 00:39, , 21F
用char陣列偽裝浮點數可以嗎
12/03 00:39, 21F

12/03 00:41, , 22F
如果要到第二位,a就*1000算出整數1229,轉換成1230,輸出
12/03 00:41, 22F

12/03 00:42, , 23F
我會考慮把a sprintf到陣列中,再轉成b
12/03 00:42, 23F

12/03 00:42, , 24F
結果時,別再用浮點數,用字串印出 1.23,這樣大概可行吧?
12/03 00:42, 24F

12/03 00:45, , 25F
原po又說他不輸出 所以還是要看用途了?
12/03 00:45, 25F

12/03 00:57, , 26F
很多事情不是現成的API就能做到的吧
12/03 00:57, 26F

12/03 01:08, , 27F

12/03 01:35, , 28F
FloatToStr( , , ) XD
12/03 01:35, 28F
文章代碼(AID): #1CzyPHK4 (C_and_CPP)
文章代碼(AID): #1CzyPHK4 (C_and_CPP)