【发布时间】:2012-04-26 16:12:27
【问题描述】:
我在浮点变量中存储了一个非常大的数字,但是当我打印它时,我只想显示整数部分,小数点后什么也不显示。
对于 int 或 long 范围内的数字,我会进行强制转换,但这对我没有帮助,因为我要打印的数字对于 int 或 long 来说太长了。
我看过这个解释:http://www.cprogramming.com/tutorial/printf-format-strings.html 但我还没有成功解决这个问题。
这是我的代码,也是我尝试进行的转换:
double sum=552074001368;
long long_sum;
long_sum = (long)(sum); //int casting for double "add"
if(sum>=0) printf("=\n%ld\n",long_sum);
else printf("=\n%ld\n",-long_sum);
我不想使用像 printf("%15f") 这样的特定精度,因为这个变量会波动,有时非常短,比如 4 位数。
【问题讨论】:
-
上面的代码有什么问题?它打印 552074001368。这不是你想要的吗?
-
@MikeKwan 它只会在具有 64 位
long的系统上执行此操作。 -
强制转换的根本问题是,它只有在目标类型(在本例中为长整数)包含数字时才有效——在这种情况下,您不妨使用该目标类型开始。
-
@Mike 我有一个 64 位系统,但它仍然打印 -2147483648
-
@nofe:一些 64 位系统仍然有 32 位长度。你可以试试
long long。
标签: c