gpt4 book ai didi

c - C 中的整数除法将值向下舍入/结果为零

转载 作者:太空宇宙 更新时间:2023-11-04 06:35:56 24 4
gpt4 key购买 nike

我正在尝试对整数进行一些算术运算。问题是当我尝试做除法以获得双倍结果时,结果始终是 0.00000000000000000000,尽管对于 ((7 * 207)/6790) 这样的值显然不是这样。我已尝试对公式进行类型转换,但我仍然得到相同的结果。

我做错了什么,我该如何解决?

int o12 = 7, o21 = 207, numTokens = 6790;
double e11 = ((o12 * o21) / numTokens);
printf(".%20lf", e11); // prints 0.00000000000000000000

最佳答案

无论实际值如何,以下内容均成立:

int / int = int

输出不会自动转换为非int类型。

因此在进行除法时,输出将被取整为 int

你想要做的是强制其中任何一个发生:

double / int = double
float / int = float
int / double = double
int / float = float

上面涉及到一个自动widening conversion - 请注意,只有一个需要是浮点值。

您可以通过以下任一方式执行此操作:

  • 在您的值之一之前放置一个 (double)(float) 以将其转换为相应的类型或
  • 将一个或多个变量更改为 doublefloat

请注意,像 (double)(int/int) 这样的强制转换将不起作用,因为它首先进行整数除法(返回 int,因此取整值),然后才将结果转换为 double (这与简单地尝试将其分配给 double 而不进行任何转换是一样的,正如您所做的那样) .

关于c - C 中的整数除法将值向下舍入/结果为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15021853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com