Показать сообщение отдельно
Старый 28.01.2013, 13:49   #20
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Математика в Blitz3D

Зарождая новый срач возвращаясь к проблеме. Да: float - тот ещё подарочек. Но Blitz, к прочему, выводит его в потоки (в файл или на экран) обрезано. Выполним вот такой вот код:
Local x#=14.143+0.000001
DebugLog "In Blitz3D my float printed as "+Str(x)
For L=1 To 20
	DebugLog GetMyFloat(x,L)
Next
WaitKey()
End
И в лог отладчика мы получим следующее:
In Blitz3D my float printed as 14.143
Ну это-то ожидаемо. Флоат же - ерунда.
На самом деле: и флоата хватает и блитц всё посчитал правильно - далее в логе читаем:
14.1
14.14
14.143
14.1430
14.14300
14.143001
14.1430006
14.14300060
14.143000603
14.1430006027
14.14300060272
14.143000602722
14.1430006027222
14.14300060272217
14.143000602722168
14.1430006027221680
14.14300060272216797
14.143000602722167969
14.1430006027221679688
14.14300060272216796875
Спасибо, Марк, за фиксированную низкую точность вывода! А это значит, что float(str(x)) - непоправимая потеря точности.
Арифметические результаты не отличаются от аналогичных в MinGW (включая мусор на младших разрядах при излишней точности).
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием