4

単純な c++ の質問です。ご覧のとおり、テーブルを作成し、変数 a と変数 t の回答を入力します。問題は、if (). ご覧のとおり、エラー(タイプミス)があります。1変数 t に example:またはがあるかどうかを識別する方法がわかりません1.5。番号に 1 がある場合 (ここに何かがあり、number. 1よりも大きい)、1 つの条件を呼び出すか、他の条件を呼び出します。

int a,b = 18;
double t;

for (a = 0; a <= b; a++)
{
    t = 8 + (double)(18 - a) / 2;
    if (t >= *.1)
        cout << setw(9) << a << setw(20) << fixed << setprecision(1) << t << endl;
    else
        cout << setw(9) << a << setw(20) << t << endl;
}

試した:

#include <iostream>
#include <iomanip>
#include <cmath>
#include <math.h>

using namespace std;
int main ()
{
    int a,b = 18;
    double t;

    for (a = 0; a <= b; a++)
    {
        t = 8 + (double)(18 - a) / 2;
        if (modf(t, NULL) >= 0.1)
        cout << setw(9) << a << setw(20) << fixed << setprecision(1) << t << endl;
         else
            cout << setw(9) << a << setw(20) << t << endl;
    }

}

modf() を最初に投稿した 'Angew' に感謝します。

#include <iostream>
#include <iomanip>
#include <cmath>
#include <math.h>

using namespace std;
int main ()
{
    int a,b = 18;
    double t,z;
    int k;

    for (a = 1; a <= b; a++)
    {
        t = 8 + (double)(18 - a) / 2;

        if (modf(t, &z) >= 0.5)
        cout << setw(9) << a << setw(20) << fixed << setprecision(1) << t << endl;
         else
            k = t;
            cout << setw(9) << a << setw(20) << k << endl;
    }
}
4

3 に答える 3

4

あなたはおそらく探していstd::modfますか?

double wholePart;
if (std::modf(t, &wholePart) >= 0.1)
于 2013-05-08T14:15:59.537 に答える
2

割り算の代わりにモジュラスを使用してみましたか? (% 記号) これにより、操作の残りが返されます。

double x = 1.1;
x = x % 1.0;
//x is equal to .1

数値と 1 の mod を見つけると、10 進数の剰余が返されるため、if ステートメントを次のように変更します。

if (t % 1.0 >= 0.1)
于 2013-05-08T14:19:46.973 に答える
1

これにより、数値の小数部分が見つかります。

double num = 23.345;
int intpart = (int)num;
double decpart = num - intpart;
//decpart = .345

BoBTfish が述べたように、これは大きな小数で問題になる可能性があります。別の可能な(安全な)解決策は次のとおりです。

double integral;
double fractional = modf(some_double, &integral);

これで、あなたのifは..

if(t_decpart >= .1)
    //
于 2013-05-08T14:11:03.137 に答える