Так вот, меня интересуют значения _xPos и _yPos, в каждом примере их значения различаются на величину от 0,0001 до 0,00000006 примерно. Почему так происходит ?
17.03.09 13:17: Перенесено модератором из 'Java' — Blazkowicz
Здравствуйте, notdefine, Вы писали:
N>Так вот, меня интересуют значения _xPos и _yPos, в каждом примере их значения различаются на величину от 0,0001 до 0,00000006 примерно. Почему так происходит ?
потому что float — вещественный тип, или тип с плавающей точкой. все операции с некоторой погрешностью. http://www.ibm.com/developerworks/java/library/j-jtp0114/
также найдете много информации в JLS.
если вы хотите сравнить два float point, то:
epsilon = 1e-6; //sample
equals a, b => abs(a-b) < epsilon;
Здравствуйте, notdefine, Вы писали:
N>Так вот, меня интересуют значения _xPos и _yPos, в каждом примере их значения различаются на величину от 0,0001 до 0,00000006 примерно. Почему так происходит ?
у float-а точность около 7 десятичных знаков. Попробуёте использовать double, ну а вообще имейте ввиду это
Здравствуйте, LDimas, Вы писали:
LD>Уверен что форумом не ошибся? Синтаксис то не джавный.
C# как минимум... но разницы все равно никакой нет float point operations всегда имеют некоторый порог погрешности
Здравствуйте, zubr, Вы писали:
Z>Здравствуйте, LDimas, Вы писали:
LD>>Уверен что форумом не ошибся? Синтаксис то не джавный. Z>C# как минимум... но разницы все равно никакой нет float point operations всегда имеют некоторый порог погрешности
Ну вы бедоного парня так активно отправляете к сановским докам, что стало немного не по себе ))))
Здравствуйте, LDimas, Вы писали:
LD>Здравствуйте, zubr, Вы писали:
Z>>Здравствуйте, LDimas, Вы писали:
LD>>>Уверен что форумом не ошибся? Синтаксис то не джавный. Z>>C# как минимум... но разницы все равно никакой нет float point operations всегда имеют некоторый порог погрешности LD>Ну вы бедоного парня так активно отправляете к сановским докам, что стало немного не по себе ))))
Здравствуйте, LDimas, Вы писали:
LD>Уверен что форумом не ошибся? Синтаксис то не джавный.
Да, у меня C#, случайно в яву попал вопрс... но от этого думаю не многое меняется, формат float`а на сколько мне известно идентичный у Java и C#
... Если ошибаюсь, то прошу прощения...
N>Так вот, меня интересуют значения _xPos и _yPos, в каждом примере их значения различаются на величину от 0,0001 до 0,00000006 примерно. Почему так происходит ?
Скорее всего, из-за оптимизации кода: во втором случае компилятор может объединить несколько вычислений в одно выражение и поэтому порядок действий изменится. Попробуйте посмотреть скомпилированный IL код и сравнить порядок вычислений.
А сама погрешность при разном порядке действий — из-за округлений числа с плавающей точкой, про которое уже написали.