分裂雙重我有這三個數字:如何解析和C++
double n1 = 1.1
double n2 = 1.10
double n3 = 1.101
,我希望將它們轉換成字符串到小數部分分離到別的地方使用它們。因此,我想有以下幾點:
string s1 = 1
string s2 = 10
string s3 = 101
我讀這使用std::to_string
,因爲它總是返回所有小數,例如是不可能的s3
將類似101000
。
然後我嘗試了以下內容:
double n3 = 1.101;
std::ostringstream strs;
strs << n3;
std::string str = strs.str();
boost::char_separator<char> sep(".");
boost::tokenizer<boost::char_separator<char>> tokens(str,sep);
for (const auto& t : tokens) {
EV << "separated parts " << t << endl;
}
這個作品在n1
和n3
情況很好,但是當我使用n2
返回1
,而不是10
。
我在想如何解決這個問題,唯一的問題是在轉換爲字符串然後再次設置精度之前計算精度。
這是一個可行的策略嗎? 如何計算點後有多少位數?
'1.1 == 1.10',沒有區別。 – Jarod42
簡單的初等數學,它在小數部分末尾有多少零並不重要。因此,1.1 == 1.10,也1.10 == 1.100000000000000000 ... –
爲什麼不使用['std :: modf()'](http://en.cppreference.com/w/cpp/numeric/math/modf) ? – piwi