2016-11-10 75 views
-2

查找所有答案后,我仍然找到了解决方案。C - 在float中查找int变量

变量需要键入INT,但在一种情况下,我需要打印十进制解。我曾尝试过铸造,仍然没有工作。

#include<stdio.h> 

int main() 
{ 
    int sum = 6; 
    int product = 24; 
    int differenz, result, division, rest, decimal; 

    differenz = ++product - sum++; 
    result = differenz * sum; 
    division = result/9; 
    rest = result % 9; 
    decimal = result/9.0; 

    printf("Result = %d\n", result); 
    printf("Integer division = %d\n", division); 
    printf("Remainder = %d\n", rest); 
    printf("Division = %.2f\n", (float) decimal); 


    return 0; 
} 

输出:

Result = 133 

Integer division = 14 

Remainder = 7 

Division = 14.00 <-- Here I am supposed to print 14.76 

我也曾尝试:

float b = (float) decimal; 
printf("Division = %.2f\n", b); 

尽管如此司= 14.00

任何尖端将受到赞赏。 在此先感谢!

+4

“变量需要是INT类型”。好吧,然后你被洗净了。一个int不能存储浮点值。 – itsme86

+2

这里'division = result/9;'这是一个整数除法,因此结果也是一个整数。 '变量需要是INT类型,但是在一种情况下,我需要打印十进制解决方案' - 用int变量来做这件事是不可能的。如果'int'能够代表浮动,我们根本不需要浮动。 –

+1

如果您的任务是通过仅使用整数显示小数值,则需要引入缩放。 –

回答

1

这是因为您将变量decimal创建为int,并且您试图将其作为浮点数进行打印。

要么将​​变量创建为float,要么将其打印为int,但不能将两者混合。

此外,将一个int值转换为float值只会加上“.00”,您将无法修改该值。

+0

这回答了我的问题。我会随着浮球去。我们将看到会发生什么。 –

0

变量“decimal”如果声明为整数,则不能正确表示除法的结果。您需要将其声明为这样的浮点数:

int main() 
{ 
    ... 
    int differenz, result, division, rest; 
    float decimal; 
    ... 
    printf("Division = %.2f\n", decimal); 
    return 0; 
} 
+0

我想铸造会有所帮助。因为在任务中要求使用INT变量。看起来我必须跟随浮球。 –