[爆卦]setprecision四捨五入是什麼?優點缺點精華區懶人包

為什麼這篇setprecision四捨五入鄉民發文收入到精華區:因為在setprecision四捨五入這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者pcion (海蛇)看板C_and_CPP標題[問題] 浮點數位數的存取(求救)時間Fri De...


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
purpose:int a 怎麼輸入3.14159... 12/03 00:17
tropical72:double a; cin >> a; cout << setprecision(2) << a; 12/03 00:17
tropical72:去查表頭檔 iomanip 裡面有什麼東西 12/03 00:18
pcion:type打錯了 用float,double隨便 我沒有打算要cout出來 12/03 00:20
pcion:請問有沒有別的方式| 12/03 00:20
james732:話說回來,3.14可以存得很精確嗎...? 12/03 00:21
pcion:就是不需要太精確 12/03 00:22
purpose:a = a*100.0; int c = (int)a; a = c / 100.0; 我不確定 12/03 00:22
tropical72:你似乎是需要 floor, ceil 之函數. 12/03 00:23
pcion:那假設今天我並不知道a小數會到第幾位這樣就不能直接用*100 12/03 00:23
loveme00835:float pi = 3.14159; float b = (int)(pi*100)/100.0; 12/03 00:24
tropical72:另就是 p 大方式,那是無條件捨去,四捨五入可參考: 12/03 00:25
tropical72:a=a*100+0.5, 其餘方式均和 p 大同. 12/03 00:25
pcion:p 大的方式我看懂了 這方法還不錯 感謝!!! 12/03 00:26
loveme00835:Orz 我打完才發現慢2分 12/03 00:27
loveme00835:另外不知道位數的話去參考浮點數的儲存格式, 用 and F 12/03 00:29
loveme00835:FF000 之類的遮罩把存小數的部分濾掉即可 12/03 00:30
purpose:仔細想想,比如十進位 123.0 / 100.0 得到的 1.23 不管怎 12/03 00:31
purpose:樣用IEEE-754存二進位時,都只能得到近似值,不能精準。 12/03 00:31
james732:其實這就是我在六樓提的問題 不過原po好像不太在意 XD 12/03 00:32
stupid0319:用char陣列偽裝浮點數可以嗎 12/03 00:39
purpose:如果要到第二位,a就*1000算出整數1229,轉換成1230,輸出 12/03 00:41
cooper6334:我會考慮把a sprintf到陣列中,再轉成b 12/03 00:42
purpose:結果時,別再用浮點數,用字串印出 1.23,這樣大概可行吧? 12/03 00:42
james732:原po又說他不輸出 所以還是要看用途了? 12/03 00:45
stupid0319:很多事情不是現成的API就能做到的吧 12/03 00:57
loveme00835:http://codepad.org/AmK08nTv 12/03 01:08
potter1529:FloatToStr( , , ) XD 12/03 01:35

你可能也想看看

搜尋相關網站