double 和 long double 小数位数的区别

Difference in the amount of decimal numbers between double and long double

double 数据类型和 long double 数据类型的小数位数有什么区别?

double - 小数点后 15 位

long double - 19 位小数(在使用 80 位格式的系统上)

80 位是最常见的格式,但并非在所有系统上都可用。

https://en.cppreference.com/w/c/language/arithmetic_types#Real_floating_types

https://www.tutorialspoint.com/cprogramming/c_data_types.htm

C 不要求 doublelong double 之间的有效小数位数有所不同。他们可能是一样的。

要报告浮点类型可以至少 忠实编码的有效小数位数,请参阅xxx_DIG

#include <float.h>

printf("long double %d\n", LDBL_DIG); // min: 10, Typically 15, 18 or 33
printf("double %d\n", DBL_DIG);       // min: 10, Often 15
printf("float %d\n", FLT_DIG);        // min:  6, Often 6