【发布时间】:2021-04-16 06:31:12
【问题描述】:
我正在做一个涉及多种类型的计算。但是,它给了我错误的结果。
我该如何解决这个问题?
这是我的示例代码:
#include <stdio.h>
int main(void){
long int numberOfOccurence;
long int occurencesPerSub = 7;
long int n = 736778906400;
int c = 100;
numberOfOccurence = ((float)occurencesPerSub / c)*n;
printf("%ld", numberOfOccurence);
return 0;
}
因此,numberOfOccurence 是 51574525952,但它应该是 51574523448,而不是。
【问题讨论】:
-
使用双精度而不是浮点数。对于大数,浮点数没有每个自然数的表示。
-
@pqans
double也没有表示所有自然数。只是上限更高了 -
@phuclv 没有固定长度的数据类型可以表示所有自然数;)
-
是的,你是对的。然而,在大多数这种简单的情况下,当 float 失败时,double 就足够了。
标签: c casting calculation