要求:
不要四舍五入,
如果没有小数位,将小数点后面的.0改成.00(比如2转换成2.00,而不是2.0)
不知道会有多少位小数,有多少位显示多少位
我想要达到的结果
比如这种的
88.495000
将后面的0给去掉
要是88.495236
就不用去掉
如果是六个0就保留小数点后两位
比如
100.000000
改成
100.00
不要四舍五入,
如果没有小数位,将小数点后面的.0改成.00(比如2转换成2.00,而不是2.0)
不知道会有多少位小数,有多少位显示多少位
比如这种的
88.495000
将后面的0给去掉
要是88.495236
就不用去掉
如果是六个0就保留小数点后两位
比如
100.000000
改成
100.00
这是C++实现代码,你可以参考一下
#include <iostream>
#include <algorithm>
using namespace std;
string truncate_tail_zeros(const string &str)
{
if (str.find_first_of('.') == string::npos)
return str + ".00";
string r;
auto itr = find_if(str.rbegin(), str.rend(), [](auto c)
{ return c != '0'; });
reverse_copy(itr, str.rend(), back_inserter(r));
if (*itr == '.')
r += "00";
return r;
}
int main()
{
string str;
while (cin >> str)
cout << "=> " << truncate_tail_zeros(str) << endl;
return 0;
}
$ g++ -Wall main.cpp
$ ./a.out
100
=> 100.00
100.0
=> 100.00
100.000
=> 100.00
100.0012345600
=> 100.00123456