c - C语言中如何保持数字的精度

标签 c precision

我试图使用这段代码将用户输入的大量数字存储在变量“num”中。

    scanf("%e",&num); //input: 340282346638528859811704183484516925440
    printf("%1.20e\n", num); // output: 3.40282346638528860000e+038

但是在“886000000”之后它会失去精度,它会向上舍入到 0。

我认为在C中,它以 double 格式存储数字。对于较大的数字,如何保持这种精度?

最佳答案

在大多数实现中,double 具有 53 位精度。这大约是 17 位十进制数字,这就是您所看到的。

如果可用,您可以使用long double;在 Intel 平台上,这将为您提供另外 11 位精度。

除此之外,您还需要找到一个多精度库。

关于c - C语言中如何保持数字的精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46506931/

相关文章:

c++ - C++的精确十进制数据类型?

C 为什么DBL_MANT_DIG宏定义为53

fortran - 提高整数商定义的变量的精度

JavaScript。尽可能少地增加或减少 float

string - MATLAB 是否提供了从 double 到 string 的无损覆盖函数?

c - 在非常小的代码片段中寻找 SEGFAULT 原因

c - <windows.h> 函数触发 Pelles C 中的 POLINK 错误

c++ - 我如何查看 Linux .so 或 .a 对象并查看它们包含哪些函数?

c - 如何制作可扩展的 GTK_IMAGE

c - K叉树(排序词)