【发布时间】:2017-05-06 08:38:36
【问题描述】:
我有两个 long long (int) 值,我想以 3 位精度的浮点格式打印它们的除法。我已经读过了
printf and long double ,但所有这些建议都会导致 nan 作为 printf 的结果。
例如
long long a = 123123123;
long long b = 123123124;
printf("%d\n", b/a);
printf("%.3f", b/a);
第一次打印将输出1(如预期),但第二次输出0.000而不是1.xxx
【问题讨论】:
-
你必须明确地转换:
printf("%.3f", (float)b/a); -
您必须先将 a 或 b 之一转换为浮点数。试试:a/(double)b。
-
第一个也是错误的:
%d采用int,而不是long long int。为此,您需要%lld。
标签: c