1

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

例子:

int length;
double width;
double area =0;

setArea (getArea() + length * width);

面积将变成 int 值。

我努力了

double newLength = static_cast<double>(length); 

或者

更改为

double length;

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

提前致谢。

4

2 回答 2

1

能否请您向我们展示一下声明setArea()? 如果它需要一个int作为参数,那么“区域”将始终被截断为一个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
于 2013-07-30T06:47:36.270 回答
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;

于 2013-07-30T06:34:44.063 回答