🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fj.lang.c
Article #403

Re: printf() で少数の表示規則

#403
From: Masao Seki
Date: Wed, 08 Apr 1998 00:00
26 lines
1592 bytes
こんにちは、関と申します。

Tsuyoshi Moriya wrote:
> 
> 森谷@SCC札幌です。
> 
> double(float)をprintfで、表示する時の規則について疑問があります。
> 
> 小数点以下をたとえば第2位まで表示するプログラムがあった場合、
> printf時には、四捨五入されるというものではないのでしょうか?

第2位まで表示するのであれば、第3位で四捨五入されます。但し、この
第3位の値は、printfなどで表示される「丸められた値」の第3位ではなく、
計算機内部の16進データを正確に10進数に直した値の第3位です。
(10進の0.045は、16進では0.0b851eb851e・・と続く無現小数なので
どこかで打ち切った近似値が格納されています。)

確認用プログラムで、例えば
        (void)printf("VAL = %.2f <- %.18f\n", 0.045, 0.045);
とでもして頂ければ、ご納得頂けるかと思います。

尚、printf文で「%f」を「l」で修飾するのは有害無益です。

--
関 正生 <masao.seki@fujixerox.co.jp || ma-seki@gb3.so-net.or.jp>
Technical Details
Message-ID: <352AEDA4.137A@rim.crl.fujixerox.co.jp>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <6gd9q0$1ng$1@fu.bekkoame.or.jp>

Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS
X-Google-Thread: 106434,e619927191a1ecb8
X-Google-Attributes: gid106434,public
From: Masao Seki <seki@rim.crl.fujixerox.co.jp>
Subject: Re: printf() で少数の表示規則
Date: 1998/04/08
Message-ID: <352AEDA4.137A@rim.crl.fujixerox.co.jp>
X-Deja-AN: 341935823
Content-Transfer-Encoding: 7bit
References: <6gd9q0$1ng$1@fu.bekkoame.or.jp>
Content-Type: text/plain; charset=iso-2022-jp
Organization: Fuji Xerox
Mime-Version: 1.0
Reply-To: masao.seki@fujixerox.co.jp
Newsgroups: fj.lang.c