int and double calculations

int and double calculations

本文关键字:calculations double and int      更新时间:2023-10-16

我遇到了一个问题,我试图设置一个双值,但它一直给我int值。

示例:

int length;
double width;
double area =0;
setArea (getArea() + length * width);

面积将变成int值。

我试过

double newLength = static_cast<double>(length); 

更改为

double length;

在设置区域之前,但不起作用。奇怪的是,当我用一个实际的整数,比如10来代替长度,或者用一个真正的十进制来代替宽度时,它是有效的。

提前谢谢。

您能给我们看一下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

问题在于以下语句

    int length;
    double width;
    double area =0;
    setArea (getArea() + length * width);

getArea应返回double值,在返回之前键入该值

同样,长度是int类型,再次将其类型转换为设置区域中的double,所以它将像这个

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

还定义了CCD_ 6;作为CCD_ 7;