簡體   English   中英

C ++將浮點數轉換為字符串

[英]C++ convert floating point number to string

我正在嘗試將浮點數轉換為字符串。 我知道您可以使用ostringstream和sprintf等來實現它,但是在項目中,我正在嘗試使用自己的函數來實現(我在不使用任何外部函數的情況下創建自己的字符串類)。 我不想要一個完美的表示形式,例如,不管這種情況發生在數字的大小上,我都不會介意:1.0420753e + 4就像標准stringstream一樣。

我知道浮點數是如何工作的(例如,符號,指數,尾數),以及如何以不同於顯示的方式來表示它們(這就是為什么很困難)。 我知道這是可能的,因為std c ++庫可以做到這一點-我只是不知道自己怎么做。

編輯:我已經創建了自己的整數版本(將int轉換為我自己的CString類)。

首先,不要自己做。 iOS具有用於格式化浮點對象的標准C ++功能,我希望Android也可以。

第二,不要自己做。 沒有舍入錯誤很難做到。 做到這一點的技術已經眾所周知並已發布,您應該使用良好的參考,而不是通常在Stack Overflow上找到的算法。 有關此問題的經典文章是David M. Gay撰寫的“正確舍入的二進制十進制和十進制二進制轉換” ,這是David Gay的代碼

簡單方法:將10除以直到值≤1。這將為您提供小數位數,之后應打印. 后面的每個數字,將原始數字乘以10 . 和。 字符串化所得的整數,然后插入.

使用ostringstream-:

double d = 2.7818; 
std::ostringstream ss;
ss << d;
std::cout << ss.str() << std::endl;

嗯,如果您真的想重新發明自己的方形齒輪,那么可能最簡單的方法是將float轉換為int(您說您知道位模式的工作原理),甚至是2個int-一個用於小數部分,另一個用於其余的,然后將它們打印出來REUSING代碼已經存在

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM