Странное деление

Предыдущая тема Следующая тема Перейти вниз

Странное деление

Сообщение  DEPOzit в Пт Июн 24, 2011 9:05 am

Есть число, к примеру 91231. Разделим его на 10.
Код:
Print 91231/10
sleep
Получим ответ: 9123.1
Тут все зашибись.

Теперь возьмем число 91232 и также его поделим на 10.
В результате получаем 9123.200000000001

С чем это связано? И как получить в результате 9123.2?

DEPOzit

Сообщения : 113
Дата регистрации : 2008-05-15
Возраст : 36
Откуда : Смоленская обл.

Посмотреть профиль http://freebasic.ru/

Вернуться к началу Перейти вниз

Re: Странное деление

Сообщение  trew в Пт Июн 24, 2011 9:18 am

DEPOzit пишет:Есть число, к примеру 91231. Разделим его на 10.
Код:
Print 91231/10
sleep
Получим ответ: 9123.1
Тут все зашибись.

Теперь возьмем число 91232 и также его поделим на 10.
В результате получаем 9123.200000000001

С чем это связано? И как получить в результате 9123.2?

Попробуй так:

Код:
Dim a As single =91232
a= a/10
?a
Sleep

trew

Сообщения : 331
Дата регистрации : 2010-10-14

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Странное деление

Сообщение  DiG. GeRR в Вт Июл 05, 2011 4:30 pm

А насчет того, с чем это связано, смотрим:
http://www.yur.ru/science/computer/IEEE754.htm
и здесь (на английском)
http://ridiculousfish.com/blog/archives/2005/09/26/float/

DiG. GeRR

Сообщения : 101
Дата регистрации : 2009-01-30
Возраст : 25
Откуда : Рудный, Казахстан

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Странное деление

Сообщение  kolos в Ср Июл 13, 2011 4:48 pm

Чтоб еще больше удивиться, попробуйте выполнить такой код
Код:

Dim As Double x1,x2,x3

x1 = 0.1
x2 = 0.3
x3 = 0.5

if x3-x2 = x2-x1 then: print "равны"
else print "не равны": end if

Причина та же самая.

kolos

Сообщения : 2
Дата регистрации : 2011-07-10

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Странное деление

Сообщение  Спонсируемый контент


Спонсируемый контент


Вернуться к началу Перейти вниз

Предыдущая тема Следующая тема Вернуться к началу

- Похожие темы

 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения