【问题标题】:How can I set the level of precision of a value obtained through static casting? [duplicate]如何设置通过静态转换获得的值的精度级别? [复制]
【发布时间】:2017-02-08 14:23:01
【问题描述】:

我想将变量 correctAnswer 的精度设置为最大 2 或 3。我不想格式化输出,而是以最大 3 精度存储在内存中。 ab 都是整数值。

double correctAnswer = static_cast<double>(a) / b;

【问题讨论】:

  • 两个或三个什么
  • 你不能通过演员来设置它。而且 double 不能代表所有值,所以无论如何它不能只保留 2 或 3 个小数位。
  • 你不能。当您以正确的格式输出它时,您可以控制精度。
  • @Quentin 我最好的猜测应该是 - 小数位。
  • 我投票决定将此问题作为题外话结束,因为这与泥浆一样清晰。请按照 cmets 的建议细化问题。

标签: c++


【解决方案1】:

您不能为转换设置精度。但你可以为输出

double d = 3.14159265358979;
std::cout.precision(3);
std::cout << "Pi: " << std::fixed << d << std::endl;

【讨论】:

  • “注意:这不会对您的值进行四舍五入。” 不是吗?此外,您可能还想设置fixed
  • 谢谢。更新了帖子
【解决方案2】:

你可以使用整数算术:

const int precision = 100;
double correctAnswer = precision * a / b / static_cast<double>( precision );

您需要确保precision * a 仍然适合int 或使用更大的类型,当您比较/输出correctAnswer 时,您仍然需要正确处理double

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-28
    • 2019-06-10
    • 1970-01-01
    • 2011-09-05
    • 2018-02-27
    • 1970-01-01
    • 2017-06-10
    • 2015-11-02
    相关资源
    最近更新 更多