c++ - 精确返回 double

标签 c++ c double

假设我有一个返回 double 的方法,但我想确定要返回的值的点后的精度。我不知道 double 变量的值。

例子:

double i = 3.365737;
return i;

我希望返回值的精度为点后3位

含义:返回值为3.365

另一个例子:

double i = 4644.322345;
return i;

我希望返回值为:4644.322

最佳答案

您想要的是截断某个数字后的十进制数字。您可以使用 floor 轻松做到这一点来自 <math.h> 的函数(如果您使用的是 C++,则来自 std::floor<cmath>):

double TruncateNumber(double In, unsigned int Digits)
{
    double f=pow(10, Digits);
    return ((int)(In*f))/f;
}

不过,我认为在某些情况下,由于浮点的内部工作方式,您可能会得到一些奇怪的结果(最后一位数字多/少)。


另一方面,大多数时候你只是绕过 double原样并仅在将其输出到流时截断它,这是使用正确的流标志自动完成的。

关于c++ - 精确返回 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7373205/

相关文章:

C 查找某个单词的所有实例

android - 不能在原始 double 上调用 toString()

c - 如何将 double 值转换为 uint8_t string[] 以在 atmel studio 的终端窗口上打印

c++ - 如何删除二维double数组

c++ - 为什么 (1 << 31) >> 31 结果是 -1?

c - Postgres 用户定义类型并正确分配内存

c++ - 读取文件,损坏的数据

c - 具有不同步进源的 Tiva ADC 定序器

c++ - box2d 迭代

c++ - 为什么要定义sizeof实现的结果?