【问题标题】:c++ float to string non-fixed precision after decimalc ++浮点到小数点后的字符串非固定精度
【发布时间】:2017-09-20 16:30:19
【问题描述】:

在将浮点数转换为字符串时,是否有一种简单的方法可以在 c++ 中设置小数点后的非固定精度?

std::setprecision(2) 的作用是:

1.00000 -> 1
1.23456 -> 1.2
12.3456 -> 12
12.3000 -> 12.3

std::fixed 添加的内容是:

1.00000 -> 1.00
1.23456 -> 1.20
12.3456 -> 12.34
12.3000 -> 12.30

我想做的是:

1.00000 -> 1
1.23456 -> 1.23
12.3456 -> 12.34
12.3000 -> 12.3

【问题讨论】:

  • 我不明白。您不是在示例中要求固定精度(在这种情况下为 2)吗?非固定精度是什么意思?
  • 请显示将浮点数转换为字符串的代码。
  • 请发帖minimal reproducible example。目前尚不清楚您现在拥有什么与您想要什么。
  • 我稍微改变了这个例子,让它更清楚。我只想为小数点后的数字设置精度,而不是数字中的所有数字,但不希望尾随零。
  • 看看this answer。但老实说,通过一个简短的程序来展示你正在尝试做什么,这会更容易回答。

标签: c++


【解决方案1】:

以下四舍五入到两位小数,然后使用默认精度:

#include <iostream>
#include <iomanip>
#include <cmath>

int main()
{
    double vals[]{1.00000, 1.23456, 12.3456, 12.3000};
    for(auto i : vals) {
        i = std::round(i * 100) / 100;
        std::cout << i << '\n';
    }
}

生产:

1
1.23
12.35
12.3

【讨论】:

    猜你喜欢
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    • 2023-03-10
    • 2013-01-10
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    相关资源
    最近更新 更多