int and double calculations
int and double calculations
我遇到了一个问题,我试图设置一个双值,但它一直给我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;
相关文章:
- C++在数学计算中将double转换为int
- 在c++中为double类型的数组创建一个unique_ptr
- vector<vector<double>> to mxArray using memcpy
- (double) 和 double() 之间的区别
- C++标准是否允许<double>在没有开销的情况下实现 std::可选
- C++ Version Of Double.longBitsToDouble
- 错误:类型"double()"和"double()"的操作数无效到二进制&quo
- 有没有办法在C++的赋值中将"char**"转换为"double"?
- 为什么 nlohmann/json 序列化 "null" 而不是在 double 上"0"?
- 使用 std::vector<double> 访问由 std::unique_ptr<double[2] 管理的数据>
- 将 std::vector<double> 从 C++ 包装到 C 以在 Swift 中使用
- 错误:无法将"<lambda(double)>"转换为"double(*)(double)"
- 如何正确将"strings"转换为"double"?
- 如何在<double>矢量中创建复杂类型的模板<T>?
- "double* grade"、"double *grade"和"double* fn()"有什么区别?
- 在不损失精度的情况下将double从C++传输到python
- 重复使用预分配的向量<复杂<double>>作为<double>长度两倍的向量
- 编译器给出错误:format 指定类型 'float *',但参数的类型'double' [-Wformat]
- Zedboard zynq-7000 Opencl 浮点数从类型 'double*' 强制转换为类型 'double' 无效
- int and double calculations