我有一个问题,我正在尝试设置一个double值,但它一直给我int值。
示例:
int length;
double width;
double area =0;
setArea (getArea() + length * width);
区域将变为int值。
我试过了
double newLength = static_cast<double>(length);
或
更改为
double length;
在设置区域之前但不起作用。奇怪的是,当我使用实际的整数(例如10代替长度)或实际的小数代替宽度时,它可以工作。
提前致谢。
答案 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
;