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

如何将一个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 nrf52810-c三个a 程序
  • ¥15 lego-loam跑出来的roll误差很大
  • ¥50 求一个半透明没有锯齿的圆角窗体的实现例子
  • ¥15 STM32cubeMX里的FreeRTOS无法释放内存
  • ¥15 CATIA有些零件打开直接单机确定终止
  • ¥15 请问有会的吗,用MATLAB做
  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对