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()? If it take an intas a parameter, then 'area' will be truncated to an parameter.の宣言を見せてください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 に答える