vhbjknkm 2022-02-15 17:50 采纳率: 100%
浏览 250
已结题

如何将一个Double型数据转换成字符串并截取字符串截取小数点后面0的方法

要求:

不要四舍五入,
如果没有小数位,将小数点后面的.0改成.00(比如2转换成2.00,而不是2.0)
不知道会有多少位小数,有多少位显示多少位

我想要达到的结果

比如这种的
88.495000
将后面的0给去掉
要是88.495236
就不用去掉

如果是六个0就保留小数点后两位
比如
100.000000
改成
100.00

  • 写回答

12条回答 默认 最新

  • _GX_ 2022-02-15 18:12
    关注

    这是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
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(11条)

报告相同问题?

问题事件

  • 系统已结题 3月2日
  • 已采纳回答 2月22日
  • 创建了问题 2月15日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵