<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410395&amp;view=findpost&amp;p=3708468</guid>
        <pubDate>Sat, 25 Feb 2017 06:07:06 +0000</pubDate>
        <title>Сложение двух чисел double в Java SE</title>
        <link>https://forum.sources.ru/index.php?showtopic=410395&amp;view=findpost&amp;p=3708468</link>
        <description><![CDATA[dark_barker: она даёт правильный ответ настолько насколько может<br>double в жаве 64 битный<br>тут всё абсолютно так же, как во всех других языках и платформах на PC которые оперируют настоящими floating point]]></description>
        <author>dark_barker</author>
        <category>Java</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410395&amp;view=findpost&amp;p=3708219</guid>
        <pubDate>Wed, 22 Feb 2017 12:54:57 +0000</pubDate>
        <title>Сложение двух чисел double в Java SE</title>
        <link>https://forum.sources.ru/index.php?showtopic=410395&amp;view=findpost&amp;p=3708219</link>
        <description><![CDATA[sasvak: Здравствуйте.<br>
<br>
Я хочу понять: как Java складывает 2 double значения (на машинном уровне или уровне двоич.) и почему она не дает правильный ответ?<br>
<br>
Те, что происходит на глубоком уровне (шаг за шагом)?<br>
<br>
Пример:<br>
<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">public class GalToLitTable {</div><div class="code_line">&nbsp;&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;public static void main(String[] args) {</div><div class="code_line">&nbsp;&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;System.out.println(3.7854 + 3.7854);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;System.out.println(7.5708 + 3.7854);</div><div class="code_line">&nbsp;&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp;</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
After run: <br>
<br>
7.5708 <br>
11.356200000000001 <br>
<br>
НО должно быть: <br>
<br>
7.5708 <br>
11.3562 <br>
<br>
<br>
Я хочу понять (шаг за шагом):<br>
<br>
1. Как Java преобраз. эти значения в двоич?<br>
<br>
2. Какое представление этого двоичн ( 80 или 64 бит длины)?<br>
<br>
3. Как Java округл. этот двоич. (7.5708 and 3.7854 not exact convert to binary, how java rounding this binary (last bit) or java cuts this binary after 64 bit without rounding)?<br>
<br>
4. Как Java суммир. два бинарных значения?<br>
<br>
5. Как Java округл. эту двоич. сумму?<br>
<br>
6. Как Java преобразов. двоич. сумму в десятичную сумму?<br>
<br>
Вот как я сам ответил на первые 3 вопроса:<br>
<br>
7.5708 = 0 10000000001 11100100100001111111110010111001001 00011101000101010 (Inexact, 1+11+52 bit = 64 bit) <br>
<br>
3.7854 = 0 10000000000 11100100100001111111110010111001001 00011101000101010 (Inexact, 1+11+52 bit = 64 bit) <br>
<br>
Java has Round-Half-Even (Banker&#39;s Rounding), when convert decimal to binary.<br>
<br>
Я прав?]]></description>
        <author>sasvak</author>
        <category>Java</category>
      </item>
	
      </channel>
      </rss>
	