将int转换为double将返回#INF00

时间:2014-09-10 07:40:09

标签: c casting

所以我试图将(3/17)投射为双倍。这是一项任务,所以教授希望它出于某种原因这样做。

我试图通过执行以下操作来施展它:

(double)(3/17)

实际代码:

int assignment7()
{
#include <stdio.h>
#define PI 3.14
    int a=0;
    double Ny=0,y=0,z=0,x=0,amod2=0;
    printf("Enter values for x,y,z and a(must be an odd number): ");
    scanf("%lf%lf%lf%d",&x,&y,&z,&a);
    amod2=a%2;
    printf("%.2lf\n",test);
    Ny=y / (double)(3/17) - z + x / amod2 + PI;
    printf("%lf\n",Ny);

}

问题发生在倒数第二行,它将3/17解释为int,因此等于0. y / 0

教授确切说明: “一般方程:y = y /(3 / 17) - z + x /(a%2)+ PI(回想:a是一个整数;等式中的3和17常数最初应保留为整数,但应明确type-casted as floating-point values)“

2 个答案:

答案 0 :(得分:3)

(3/17)等于0,因为它是使用整数运算进行计算的,因此得到除以零,这当然是运行时错误。变化:

(double)(3/17)

为:

(3.0 / 17.0)

请注意,演员表是多余的。

答案 1 :(得分:0)

由于3/17为零,因此除以零。

而是使用双打来开始:3.0 / 17.0,然后你甚至不需要演员。