🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fj.lang.c
Article #401

printf() で少数の表示規則

#401
From: Tsuyoshi Moriya
Date: Tue, 07 Apr 1998 00:00
43 lines
1514 bytes
森谷@SCC札幌です。

double(float)をprintfで、表示する時の規則について疑問があります。

小数点以下をたとえば第2位まで表示するプログラムがあった場合、
printf時には、四捨五入されるというものではないのでしょうか?

以下のプログラムと結果は、HP-UX9.07でコンパイル実行しました。
(コンパイラは、cc、gccで行ってみましたが、同じ結果でした。)
この結果からは、規則性が見出せなかったのですが、
何か、変換規則みたいなものはあるのでしょうか?
よろしく、お願いいたします。

●ソース
void main(void)
{
	double	d;
	int	i;

        (void)printf("VAL = %.2lf\n", (float)0.044);
	(void)printf("VAL = %.2lf\n", (float)0.045);

	(void)printf("VAL = %.2lf\n", 0.045);
	(void)printf("VAL = %.2lf\n", 0.046);

	d = (double)0.0;
	for (i = 0; i < 45; i ++) {
		d += (double)0.001;
	}
	(void)printf("VAL = %.2lf\n", d);
	(void)printf("VAL = %lf\n", d);


}

●結果
VAL = 0.04
VAL = 0.05
VAL = 0.04
VAL = 0.05
VAL = 0.05
VAL = 0.045
Technical Details
Message-ID: <6gd9q0$1ng$1@fu.bekkoame.or.jp>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS
X-Google-Thread: 106434,e619927191a1ecb8,start
X-Google-Attributes: gid106434,public
From: moriya@ppp.bekkoame.or.jp (Tsuyoshi Moriya)
Subject: printf() で少数の表示規則
Date: 1998/04/07
Message-ID: <6gd9q0$1ng$1@fu.bekkoame.or.jp>
X-Deja-AN: 341695198
Content-Type: text/plain; charset=ISO-2022-JP
Organization: BEKKOAME INTERNET INC.
Mime-Version: 1.0
Newsgroups: fj.lang.c