分裂双重我有这三个数字:如何解析和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