Мегаглюк

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Мегаглюк

Сообщение Tolking 12 сен 2013, 22:43

Часа 4 ловил...

Pos=(-2,-2,-2)
gameObject.transform.position=(-16,-16,-16)

Vector3 bp=pos-gameObject.transform.position;
int i=(int)bp.x;
int j=(int)bp.y;
int k=(int)bp.z;

Вопрос чему равно k? А вот и не правильно! k=13!

В дебагере:
(int)bp.z=14
(int)(bp.z*1000000)=14000000

int k=(int)bp.z*1000000;

k=139999990...

Может в дебагере можно где-то галку поставить чтобы точно значения выводились?
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Мегаглюк

Сообщение artk 13 сен 2013, 01:51

Так в чем глюк?
Прочитайте про плавающую точку.
Аватара пользователя
artk
Старожил
 
Сообщения: 749
Зарегистрирован: 22 май 2011, 12:22

Re: Мегаглюк

Сообщение BornFoRdeatH 13 сен 2013, 01:58

Какие вам галки, по человечески форматируйте число в строку, и будет вам точно.
Не бойся, если ты один, бойся, если ты ноль.
BornFoRdeatH
Адепт
 
Сообщения: 2377
Зарегистрирован: 22 окт 2011, 23:41
Откуда: Украина
Skype: bornfordeath

Re: Мегаглюк

Сообщение seaman 13 сен 2013, 07:48

Синтаксис:
Используется csharp
    Vector3 point = new Vector3(0.9887f, 1.56789f, 3.09273475f);
    Debug.Log(point.ToString("F4"));
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Мегаглюк

Сообщение Tolking 13 сен 2013, 12:32

artk писал(а):Так в чем глюк?
Прочитайте про плавающую точку.


В плавающей точке что-то изменилось за последние 20 лет?

Глюк в том что дебагер либо показывает выражение неправильно либо вычисляет... Показывает: (int)bp.z=14 хотя реально (int)bp.z=13!

С таким:

int x=14;
float xf=(float)x;
int xx=(int)xf;

xx==xf==false !!!! Я в нормальных языках 1 раз встретился...
(конечно transform может координаты искажать, но чтобы дебагер показывал не то, что есть первый раз встретился...)
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Мегаглюк

Сообщение 2rusbekov 13 сен 2013, 13:12

У меня было такое
var b : float = целое число;
Matf.Pow(b,2) показывало число.46879687494 и число было не близким к квадрату того числа
Still alive...
Аватара пользователя
2rusbekov
Адепт
 
Сообщения: 1409
Зарегистрирован: 06 апр 2012, 12:57
Откуда: Бишкек

Re: Мегаглюк

Сообщение Dewa1s 14 сен 2013, 05:19

Tolking писал(а):
artk писал(а):Так в чем глюк?
Прочитайте про плавающую точку.


В плавающей точке что-то изменилось за последние 20 лет?

Глюк в том что дебагер либо показывает выражение неправильно либо вычисляет... Показывает: (int)bp.z=14 хотя реально (int)bp.z=13!

С таким:

int x=14;
float xf=(float)x;
int xx=(int)xf;

xx==xf==false !!!! Я в нормальных языках 1 раз встретился...
(конечно transform может координаты искажать, но чтобы дебагер показывал не то, что есть первый раз встретился...)

Синтаксис:
Используется csharp
void Start() {
                var pos = new Vector3(-2,-2,-2);
                gameObject.transform.position = new Vector3(-16,-16,-16);
                Vector3 bp=pos-gameObject.transform.position;
int i=(int)bp.x;
int j=(int)bp.y;
int k=(int)bp.z*1000000;
                print(k);
    }

в консоль вывело 14000000
что я делаю не так?
поменял последнюю строчку на
Синтаксис:
Используется csharp
int k=(int)bp.z*1000;
                transform.position = new Vector3(i,j,k);

объект встал в положенную ему позицию с координатой z = 14000
Синтаксис:
Используется csharp
int x=14;
float xf=(float)x;
int xx=(int)xf;

xx==xf

выдает true, что опять я делаю не так?
Аватара пользователя
Dewa1s
Старожил
 
Сообщения: 564
Зарегистрирован: 26 дек 2011, 02:12

Re: Мегаглюк

Сообщение waruiyume 14 сен 2013, 05:37

что я делаю не так?

Не используете отладчик!?
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Мегаглюк

Сообщение Dewa1s 14 сен 2013, 09:33

waruiyume писал(а):
что я делаю не так?

Не используете отладчик!?

Угу, теперь то все совсем по-другому...
Скрытый текст:
Изображение
Аватара пользователя
Dewa1s
Старожил
 
Сообщения: 564
Зарегистрирован: 26 дек 2011, 02:12

Re: Мегаглюк

Сообщение Tolking 14 сен 2013, 12:53

gluk.jpg

Два последних отладочных значения главное... Просто имейте это в виду. Видимо у отладчика точность занижена и он показывает округленные значения... По-другому не могу феномен объяснить.
У вас нет доступа для просмотра вложений в этом сообщении.
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23