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

如何将一个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日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装