3

これも可能ですか?私はそれをグーグルしようとしましたが、私は正しい答えを見つけることができないようです。

小数点以下3桁で5桁しかない場合は答えが大きく異なるので、小数点以下を制限する必要がありますので、よろしくお願いします。小数点以下3桁で印刷する方法は知っていますが、小数点以下3桁のみを保持する変数を宣言することは私にはわかりません。リンクがあれば、リンクを使用することもできます。

float sinfa(float num1)
{
    float fc;
    float powers;
    float rad_angle;

    rad_angle = num1 * (PI / 180.0);
    powers = pow(num1,4);
    fc = sin(rad_angle)-powers+1;
    return (fc);
}

float sinfb(float num2)
{
    float fd;
    float powerss;
    float rad_angle1;

    rad_angle1 = num2 * (PI / 180.0);
    powerss = pow(num2,4);
    fd = sin(rad_angle1)-powerss+1;
    return (fd);
}

float tp(float fa,float fb,float num1,float num2)
{
    float p;
    float fm2 = fa*num2;
    float fm1 = fb*num1;
    p = (fm2-fm1)/(fa-fb);
    return (p);
}

float sinp(float p1)
{
    float fop;
    float ppowers;
    float rad_angle2;

    rad_angle2 = p1 * (PI / 180.0);
    ppowers = pow(p1,4);
    fop = sin(rad_angle2)-ppowers+1;
    return (fop);
}

ありがとうございました

4

2 に答える 2

2

できません。Afloatは、これまでに使用したすべてのCコンパイラの32ビット浮動小数点値です。言語には、それがどのように機能するかを再定義するための標準はありません。

1000を掛けた値を格納する一連の固定小数点関数を作成するか、任意の精度で固定小数点を実装し、精度を10進数の3桁に設定する一般的なライブラリを使用できます。

C ++固定小数点ライブラリ?

于 2013-02-01T02:44:45.590 に答える
2

できます!

int intVal = 1.234567 * 1000;          // result: 1234
float floatVal = (float)intVal / 1000; // result: 1.234

秘訣は次のとおりです。

  1. 必要な桁数を小数点以下の桁数に移動します。
  2. 小数点以下の桁をすべて切り捨てます。
  3. 必要な桁数を小数点以下の桁数に戻します。
于 2013-02-01T03:39:11.607 に答える