Четверг, 28 Марта 2024, 23:44

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Проблемы float или числа с плавающей точкой
Проблемы float или числа с плавающей точкой
robertonoДата: Вторник, 15 Октября 2013, 20:38 | Сообщение # 1
Чокнутый Кот
Сейчас нет на сайте
Всем известно, что числа float иногда выглядят немного непонятно.. Например когда вы покрутите какой то объект на сцене, и потом вернёте его в 0 0 0 то сможете увидеть число -9.536743E-07 или 9.536743E-07 или 2.861023E-06. Всё это тоже самое что и число 0 (ноль). Как можно сконвертировать что ли.. ..это число непонятное в нормальное всем понятное ? Есть формула как это считается? И что это за E-** ? Может это когда нибудь будет изучаться в школе на алгебре, но я лично не в курсе. Жду ответа. Заранее спасибо happy
ReminerДата: Вторник, 15 Октября 2013, 20:45 | Сообщение # 2
был не раз
Сейчас нет на сайте
Цитата robertono ()
И что это за E-** ?

Е это 10
** степень десятки.


Сообщение отредактировал Reminer - Вторник, 15 Октября 2013, 20:47
robertonoДата: Вторник, 15 Октября 2013, 21:09 | Сообщение # 3
Чокнутый Кот
Сейчас нет на сайте
А реально это конвертировать в нормальное число?
seamanДата: Вторник, 15 Октября 2013, 21:16 | Сообщение # 4
старожил
Сейчас нет на сайте
В шарпе
Single.TryParse(строка).
warzesДата: Среда, 16 Октября 2013, 07:14 | Сообщение # 5
участник
Сейчас нет на сайте
Цитата robertono ()
А реально это конвертировать в нормальное число?

Это вообще-то и есть нормальное число. Или ты хочешь сравнивать прям уж точно? Тогда влоат не для тебя

Цитата robertono ()
Всё это тоже самое что и число 0 (ноль)

2 и 9 не может быть тем же что 0, что-то у тебя не так


Мой блог
Вики DirectX
robertonoДата: Среда, 16 Октября 2013, 19:01 | Сообщение # 6
Чокнутый Кот
Сейчас нет на сайте
Цитата warzes ()
2 и 9 не может быть тем же что 0, что-то у тебя не так

но объект стоит так же , если его вернуть на 0 0 0 по rotation.
Я просто делаю штуку, где пользователь может повернуть объект. И он видит углы поворота. Беру их из transform.rotation.eul..Edges .
И если прибавить к X +10, а потом -10 (10.0f) то становиться не обратно ноль, а какое то число которое я писал в первом посте. Так что это всё ноль.
Находил я такое на answers.unity3d.com. Там чувак сказал что это число (вроде это -9.536743E-07) приравнивается к нулю.
NEBRДата: Среда, 16 Октября 2013, 19:27 | Сообщение # 7
почти ветеран
Сейчас нет на сайте
robertono, углы Эйлера должны быть строго в диапазоне от 0 до 360 градусов, прибавляя или убавляя 10, заостри внимание на этом, не выходит ли значение за эти пределы. Может проблема в этом.

King Size #Gamiron12
robertonoДата: Среда, 16 Октября 2013, 21:01 | Сообщение # 8
Чокнутый Кот
Сейчас нет на сайте
NEBR, не выходит. Но это просто число, просто длинное.. Я проверю
GECKДата: Среда, 16 Октября 2013, 21:17 | Сообщение # 9
заслуженный участник
Сейчас нет на сайте
Цитата robertono ()
Например когда вы покрутите какой то объект на сцене, и потом вернёте его в 0 0 0 то сможете увидеть число -9.536743E-07 или 9.536743E-07 или 2.861023E-06

Это из-за особенностей хранения вещественных чисел в памяти. При вычитании близких по величине чисел результат получается с погрешностью.

Число -9.536743E-07 в обычной записи выглядит так: -0.0000009536743 (очень близко, но все-таки не ноль). Если хочешь получить красивое число - попробуй что-то вроде Mathf.Round(число * 1000) / 1000.0


Всё гениальное просто. И хреново работает.
robertonoДата: Среда, 16 Октября 2013, 21:21 | Сообщение # 10
Чокнутый Кот
Сейчас нет на сайте
Цитата GECK ()
Число -9.536743E-07 в обычной записи выглядит так: -0.0000009536743

А как вы это определили?

Цитата GECK ()
Если хочешь получить красивое число - попробуй что-то вроде Mathf.Round(число * 1000) / 1000.0

Хорошо, спасибо, попробую!
GECKДата: Среда, 16 Октября 2013, 21:26 | Сообщение # 11
заслуженный участник
Сейчас нет на сайте
Цитата Reminer ()
Е это 10
** степень десятки.

-9.536743E-07 = -9.536743 * 10^(-7) = -9.536743 * 0.0000001 = -0.0000009536743


Всё гениальное просто. И хреново работает.
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Проблемы float или числа с плавающей точкой
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг