我试图使用这段代码将用户输入的大量数字存储在变量“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/