gpt4 book ai didi

c++ - 避免双变量中的垃圾零值

转载 作者:行者123 更新时间:2023-11-28 01:55:27 26 4
gpt4 key购买 nike

在我下面的程序中,

main
{
// value is 476
int value = 476;

// here dimension shows as 0.100000001
float dimension = 0.1f;



/// Here I am expecting value as 47.6,
/// But it gives value as 47.600002288818......
double result = value * dimension;
}

我想直接将值保存在数据库中,那么有没有内置函数可以获取预期值?

预期:47.6 而不是 47.600002288.....

最佳答案

有几种方法,但在所有情况下,您都必须弄清楚并决定您的浮点值应表示多少位精度。 float 并没有表示“我实际上是 .1 而不是 0.100000001”。

一旦您决定,例如,您的值应该有两位数的精度,有几种方法可以将它们四舍五入。一种简单的方法是使用流格式:

#include <sstream>
#include <iomanip>

std::ostringstream o;

o << std::setiosflags(std::ios::fixed) << std::setprecision(2) << 0.1;

std::string s=o.str();

您现在将在 s 中找到“0.10”。

如果您不知道作为您正在进行的任何计算的结果,有多少位精度是重要的,您唯一的选择是使用固定精度算法的专用库,like GMP .

关于c++ - 避免双变量中的垃圾零值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41397350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com