Article View: fj.lang.c
Article #403Re: printf() で少数の表示規則
From: Masao Seki
Date: Wed, 08 Apr 1998 00:00
Date: Wed, 08 Apr 1998 00:00
26 lines
1592 bytes
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-mailReferences:
<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