int和double计算

时间:2013-07-30 06:23:47

标签: c++ int double

我有一个问题,我正在尝试设置一个double值,但它一直给我int值。

示例:

int length;
double width;
double area =0;

setArea (getArea() + length * width);

区域将变为int值。

我试过了

double newLength = static_cast<double>(length); 

更改为

double length;

在设置区域之前但不起作用。奇怪的是,当我使用实际的整数(例如10代替长度)或实际的小数代替宽度时,它可以工作。

提前致谢。

2 个答案:

答案 0 :(得分:1)

是否可以告诉我们setArea()?的声明如果int作为参数,那么'area'将始终被截断为int

#include <iostream>

void setAreaInt(int newArea);
void setAreaDouble(double newArea);

int length;
double width;
double area = 0;

using namespace std;

int main () {

    length = 19;
    width = 4.3;
    setAreaInt (length * width);
    std::cout << area << endl;
    setAreaDouble (length * width);
    std::cout << area << endl;

    return 0;
}

void setAreaInt(int newArea) {
    area = newArea;
}


void setAreaDouble(double newArea) {
    area = newArea;
}

输出:

81
81.7

答案 1 :(得分:0)

以下陈述中存在问题

    int length;
    double width;
    double area =0;

    setArea (getArea() + length * width);

getArea应返回double值,在返回

之前对该值进行类型转换

此外,长度为int类型再次将其类型转换为设置区域中的double,因此它将是这样的

setArea ((double)getArea() + (double)length * width);

还定义double area =0;作为double area =0.0f;