Path: csiph.com!aioe.org!.POSTED!not-for-mail From: =?UTF-8?Q?Arne_Vajh=c3=b8j?= Newsgroups: comp.lang.java.programmer Subject: Re: [OT] Re: missing import java.lang.Comparable Date: Fri, 8 Jul 2016 20:32:01 -0400 Organization: Aioe.org NNTP Server Lines: 37 Message-ID: References: <8668311a-503f-46b6-909c-dcbfbfc5ce19@googlegroups.com> <128e7e20-d311-413d-abbc-e885b34ae402@googlegroups.com> <87dc5bee-f689-4f2e-90a8-a43a2de9fe49@googlegroups.com> <638a1d64-f125-4456-a20b-4dbf45f49da2@googlegroups.com> <60a5ccde-2657-48d6-b3dd-04ec1a0973ab@googlegroups.com> NNTP-Posting-Host: 7SK6yTFfqwlIPNBLl3l7Qg.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.1.1 X-Notice: Filtered by postfilter v. 0.8.2 Xref: csiph.com comp.lang.java.programmer:34815 On 7/8/2016 3:54 PM, Eric Douglas wrote: > On Friday, July 8, 2016 at 2:07:28 PM UTC-4, Andreas Leitgeb wrote: >>> Program: >>> double a = .0002; >>> double b = .0001; >>> System.out.println(a + b); >>> Result: >>> 3.0000000000000003E-4 >> >> That's why formatted printing (e.g. printf) is preferable to >> the default stringification of floating point values in such >> cases. > > Program: > DecimalFormat myFormatter = new DecimalFormat("0.####################"); > String output; > double a = .0002; > double b = .0001; > output = myFormatter.format(a + b); > System.out.println(output); > BigDecimal bda = new BigDecimal(String.valueOf(a)); > BigDecimal bdb = new BigDecimal(String.valueOf(b)); > bda = bda.add(bdb); > output = myFormatter.format(bda.doubleValue()); > System.out.println(output); > Output: > 0.00030000000000000003 > 0.0003 I don't think this example shows what you think it shows. It really shows that String.valueOf has an impact on the result. Arne