四捨五入させないためには?

解決


ネロ  2006-09-13 23:10:52  No: 62998

こんにちは。

以下のようなプログラムを記述したのですが、
Xを0.0954321から"9"に(少数点第3位以下を切り捨て)
Yを-0.1054321から"-10"に(少数点第3位以下を切り捨て)
したいのですが、
X_Answer = 10
Y_Answer = -11
と四捨五入された値が返ってきてしまいます。
少数点第3位以下を切り捨てするためにはどうしたらいいのでしょうか?

float X,Y;
char Xdata[10]={0};
char Ydata[10]={0};
int X_Answer, Y_Answer;

X = 0.0954321;  
Y = -0.1054321;
X = X * 100;
Y = Y * 100;
sprintf(Xdata, "%5.0f", X);
sprintf(Ydata, "%5.0f", Y);
X_Answer = atoi(Xdata);
Y_Answer = atoi(Ydata);

以上、宜しくお願いします。


  2006-09-13 23:39:01  No: 62999

この程度なら自分の場合はキャストで小数点以下を切るに一票。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    float X,Y;
    char Xdata[10]={0};
    char Ydata[10]={0};
    int X_Answer, Y_Answer;

    X = 0.0954321;
    Y = -0.1054321;
    X = X * 100;
    Y = Y * 100;
    sprintf(Xdata, "%d", (int)X);
    sprintf(Ydata, "%d", (int)Y);
    X_Answer = atoi(Xdata);
    Y_Answer = atoi(Ydata);

    printf("X_Answer is [%d]\n",X_Answer);
    printf("Y_Answer is [%d]\n",Y_Answer);
}


ネロ  2006-09-14 02:47:13  No: 63000

上記の方法で、解決出来ました。
ありがとうございました。


ネロ  2006-09-14 02:47:55  No: 63001

上記の方法で、解決出来ました。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加