Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.04.2013, 23:24
AzagThoth вне форума Посмотреть профиль Отправить личное сообщение для AzagThoth Найти все сообщения от AzagThoth
  № 1  
Ответить с цитированием
AzagThoth
 
Аватар для AzagThoth

блогер
Регистрация: Sep 2009
Сообщений: 309
Записей в блоге: 4
Отправить сообщение для AzagThoth с помощью ICQ
Cool Неправильная математика, дроби вылезают из ниоткуда.

Здравствуйте. Собственно столкнулся с интересной проблемкой. При работе с числами, откуда ни возьмись вылазиют дроби. Хотя если на калькуляторе Windows считать их нет. Так же причина по которой решил написать в том, что считаю что такие ошибки просто недопустимы. т.е. если всё так обстоит то на математические функции флеша нельзя полагаться вовсе? А от этого ведь очень многое зависит. Приложил исходники во вложение.
Есть код:
Код AS1/AS2:
cirkle_mc.stop();
cirkle_mc._x = point1_mc._x;
cirkle_mc._y = point1_mc._y;
var stepX:Number = 0;
var stepY:Number = 0;
var xX:Number = 0;
var yY:Number = 0;
button_btn.onPress  = function(){
	stepX = (point2_mc._x-cirkle_mc._x)/100;
	stepY = (point2_mc._y-cirkle_mc._y)/100;
	xX = cirkle_mc._x;
	yY = cirkle_mc._y;
 
	cirkle_mc.onEnterFrame  = function(){
		trace([xX,xX==point2_mc._x,point2_mc._x,yY,yY==point2_mc._y,point2_mc._y]);
		if(xX == point2_mc._x && yY == point2_mc._y){
			return;
		}
		xX = xX+stepX;
		yY = yY+stepY;
		cirkle_mc._x = xX;
		cirkle_mc._y = yY;
	}
 
}
Вот что в трейсах:
Код:
102,false,314,294,false,42
104.12,false,314,291.48,false,42
106.24,false,314,288.96,false,42
108.36,false,314,286.44,false,42
110.48,false,314,283.92,false,42
112.6,false,314,281.4,false,42
114.72,false,314,278.88,false,42
116.84,false,314,276.36,false,42
118.96,false,314,273.84,false,42
121.08,false,314,271.32,false,42
123.2,false,314,268.8,false,42
125.32,false,314,266.28,false,42
127.44,false,314,263.76,false,42
129.56,false,314,261.24,false,42
131.68,false,314,258.72,false,42
133.8,false,314,256.2,false,42
135.92,false,314,253.68,false,42
138.04,false,314,251.16,false,42
140.16,false,314,248.64,false,42
142.28,false,314,246.12,false,42
144.4,false,314,243.6,false,42
146.52,false,314,241.08,false,42
148.64,false,314,238.56,false,42
150.76,false,314,236.04,false,42
152.88,false,314,233.52,false,42
155,false,314,231,false,42
157.12,false,314,228.48,false,42
159.24,false,314,225.96,false,42
161.36,false,314,223.44,false,42
163.48,false,314,220.92,false,42
165.6,false,314,218.4,false,42
167.72,false,314,215.88,false,42
169.84,false,314,213.36,false,42
171.96,false,314,210.84,false,42
174.08,false,314,208.32,false,42
176.2,false,314,205.8,false,42
178.32,false,314,203.28,false,42
180.44,false,314,200.76,false,42
182.56,false,314,198.24,false,42
184.68,false,314,195.72,false,42
186.8,false,314,193.2,false,42
188.92,false,314,190.68,false,42
191.04,false,314,188.16,false,42
193.16,false,314,185.64,false,42
195.28,false,314,183.12,false,42
197.4,false,314,180.6,false,42
199.52,false,314,178.08,false,42
201.64,false,314,175.56,false,42
203.76,false,314,173.04,false,42
205.88,false,314,170.52,false,42
208,false,314,168,false,42
210.12,false,314,165.48,false,42
212.24,false,314,162.96,false,42
214.36,false,314,160.44,false,42
216.48,false,314,157.92,false,42
218.6,false,314,155.4,false,42
220.72,false,314,152.88,false,42
222.84,false,314,150.36,false,42
224.96,false,314,147.84,false,42
227.08,false,314,145.32,false,42
229.2,false,314,142.8,false,42
231.32,false,314,140.28,false,42
233.44,false,314,137.76,false,42
235.56,false,314,135.24,false,42
237.68,false,314,132.72,false,42
239.8,false,314,130.2,false,42
241.92,false,314,127.68,false,42
244.04,false,314,125.16,false,42
246.16,false,314,122.64,false,42
248.28,false,314,120.12,false,42
250.4,false,314,117.6,false,42
252.52,false,314,115.08,false,42
254.64,false,314,112.56,false,42
256.76,false,314,110.04,false,42
258.88,false,314,107.52,false,42
261,false,314,105,false,42
263.12,false,314,102.48,false,42
265.24,false,314,99.9599999999998,false,42
267.36,false,314,97.4399999999998,false,42
269.48,false,314,94.9199999999998,false,42
271.6,false,314,92.3999999999998,false,42
273.72,false,314,89.8799999999998,false,42
275.84,false,314,87.3599999999998,false,42
277.96,false,314,84.8399999999998,false,42
280.08,false,314,82.3199999999998,false,42
282.2,false,314,79.7999999999998,false,42
284.32,false,314,77.2799999999998,false,42
286.44,false,314,74.7599999999998,false,42
288.56,false,314,72.2399999999999,false,42
290.68,false,314,69.7199999999999,false,42
292.8,false,314,67.1999999999999,false,42
294.92,false,314,64.6799999999999,false,42
297.04,false,314,62.1599999999999,false,42
299.16,false,314,59.6399999999999,false,42
301.28,false,314,57.1199999999999,false,42
303.4,false,314,54.5999999999998,false,42
305.52,false,314,52.0799999999999,false,42
307.64,false,314,49.5599999999998,false,42
309.76,false,314,47.0399999999998,false,42
311.88,false,314,44.5199999999998,false,42
314,false,314,41.9999999999998,false,42
316.12,false,314,39.4799999999998,false,42
318.24,false,314,36.9599999999998,false,42
320.36,false,314,34.4399999999998,false,42
322.48,false,314,31.9199999999998,false,42
324.6,false,314,29.3999999999998,false,42
326.72,false,314,26.8799999999998,false,42
328.84,false,314,24.3599999999998,false,42
330.96,false,314,21.8399999999998,false,42
333.08,false,314,19.3199999999998,false,42
335.200000000001,false,314,16.7999999999998,false,42
337.320000000001,false,314,14.2799999999998,false,42
339.44,false,314,11.7599999999998,false,42
341.560000000001,false,314,9.23999999999983,false,42
343.680000000001,false,314,6.71999999999983,false,42
345.800000000001,false,314,4.19999999999983,false,42
347.920000000001,false,314,1.67999999999983,false,42
350.040000000001,false,314,-0.840000000000168,false,42
352.160000000001,false,314,-3.36000000000017,false,42
354.280000000001,false,314,-5.88000000000017,false,42
356.400000000001,false,314,-8.40000000000017,false,42
358.520000000001,false,314,-10.9200000000002,false,42
360.640000000001,false,314,-13.4400000000002,false,42
362.760000000001,false,314,-15.9600000000002,false,42
364.880000000001,false,314,-18.4800000000002,false,42
367.000000000001,false,314,-21.0000000000002,false,42
369.120000000001,false,314,-23.5200000000002,false,42
371.240000000001,false,314,-26.0400000000002,false,42
373.360000000001,false,314,-28.5600000000002,false,42
375.480000000001,false,314,-31.0800000000002,false,42
377.600000000001,false,314,-33.6000000000002,false,42
379.720000000001,false,314,-36.1200000000002,false,42
381.840000000001,false,314,-38.6400000000002,false,42
383.960000000001,false,314,-41.1600000000002,false,42
386.080000000001,false,314,-43.6800000000002,false,42
388.200000000001,false,314,-46.2000000000002,false,42
390.320000000001,false,314,-48.7200000000002,false,42
392.440000000001,false,314,-51.2400000000002,false,42
394.560000000001,false,314,-53.7600000000002,false,42
396.680000000001,false,314,-56.2800000000002,false,42
398.800000000001,false,314,-58.8000000000002,false,42
400.920000000001,false,314,-61.3200000000002,false,42
403.040000000001,false,314,-63.8400000000002,false,42
405.160000000001,false,314,-66.3600000000002,false,42
407.280000000001,false,314,-68.8800000000002,false,42
409.400000000001,false,314,-71.4000000000002,false,42
411.520000000001,false,314,-73.9200000000002,false,42
413.640000000001,false,314,-76.4400000000002,false,42
415.760000000001,false,314,-78.9600000000002,false,42
417.880000000001,false,314,-81.4800000000002,false,42
Кто-нибудь из Вас с подобным сталкивался? Решение есть?
Вложения
Тип файла: zip mathematics.zip (11.9 Кб, 16 просмотров)
__________________
Играй. Это жизнь.
Всё повторяется. Играй.

Старый 10.04.2013, 23:36
maxkar вне форума Посмотреть профиль Отправить личное сообщение для maxkar Найти все сообщения от maxkar
  № 2  
Ответить с цитированием
maxkar

Регистрация: Nov 2010
Сообщений: 497
Классика.

Решение простое - не сравнивать числа с плавающей точкой на строгое равенство (за исключением совсем специальных случаев).

Старый 11.04.2013, 12:32
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 3  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
Это у вас еще ерунда. Дроби. Во флэше возможен такой вариант еще:
2/1= 1.0000000000001 или наоборот 0.999999999999999

Зато можно безболезненно делить на ноль....
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

Создать новую тему Ответ Часовой пояс GMT +4, время: 05:50.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 05:50.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.