Проблема с округлением float, после вычитания...

Программирование на Юнити.

Проблема с округлением float, после вычитания...

Сообщение magic3d 04 июн 2010, 15:27

Если взять 2 числа float с 5 знаками после запятой и сделать вычитание, то получается чисо с 4 знаками. Посовейтуйте, как это победить. Сеньки..
Аватара пользователя
magic3d
UNIт
 
Сообщения: 75
Зарегистрирован: 16 апр 2009, 11:43
Откуда: Днепр
  • Сайт

Re: Проблема с округлением float, после вычитания...

Сообщение magic3d 04 июн 2010, 16:11

Я у себя проблему решил - просто увеличил маштаб сцены на 10 и дополнительный знак после запятой не понадобился. Но на вский случай, вопрос интересный и хотелось бы узнать решение..
Аватара пользователя
magic3d
UNIт
 
Сообщения: 75
Зарегистрирован: 16 апр 2009, 11:43
Откуда: Днепр
  • Сайт

Re: Проблема с округлением float, после вычитания...

Сообщение Multirezonator 07 июн 2010, 07:15

Для округления чисел используем Mathf.Round(float f):
Синтаксис:
Используется csharp
float c=Mathf.Round(a-b);
Скрытый текст:



Аватара пользователя
Multirezonator
UNITрон
 
Сообщения: 248
Зарегистрирован: 15 фев 2010, 16:12
Откуда: Украина, Луганск
  • Сайт

Re: Проблема с округлением float, после вычитания...

Сообщение magic3d 07 июн 2010, 17:46

А ты хоть сам это пробовал - Mathf.Round(float f)? Вот у меня фунция делает как в описании - "rounded to the nearest integer" :)
А я написал, что в Unity все мат. действия выдают макс. 4 знака после запятой. Вот если координаты объектов - 5 знаков после запятой, то операции между ними будут не очень точны. Поэтому лучше просто увеличить маштаб сцены...
Аватара пользователя
magic3d
UNIт
 
Сообщения: 75
Зарегистрирован: 16 апр 2009, 11:43
Откуда: Днепр
  • Сайт

Re: Проблема с округлением float, после вычитания...

Сообщение discouraged_one 08 июн 2010, 00:46

хм... прекрасно, а как вы проверяли, простите?
А то ж первое что пришло в голову
Debug.Log(1.234567 - 0.123456);
выдало ожидаемое
1.111111
Unity Technologies
Аватара пользователя
discouraged_one
Unity Technologies
 
Сообщения: 197
Зарегистрирован: 19 май 2010, 15:56

Re: Проблема с округлением float, после вычитания...

Сообщение magic3d 09 июн 2010, 14:30

Хммм... Тут убрали ответ, что у floate макс. - 7 знаков.
Т.е. Debug.Log( 20.234567 - 10.123456); будет уже 10,11111
Аватара пользователя
magic3d
UNIт
 
Сообщения: 75
Зарегистрирован: 16 апр 2009, 11:43
Откуда: Днепр
  • Сайт

Re: Проблема с округлением float, после вычитания...

Сообщение Neodrop 09 июн 2010, 14:45

Протираем глаза и читаем объявления форума. Откат был на день. :-w
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Проблема с округлением float, после вычитания...

Сообщение Kann 09 июн 2010, 14:49

magic3d писал(а):Хммм... Тут убрали ответ, что у floate макс. - 7 знаков.
Т.е. Debug.Log( 20.234567 - 10.123456); будет уже 10,11111


и что ? все правильно, в чем суть вопроса ? мы тут не кашпировские, мысли читать не умеем :))
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06

Re: Проблема с округлением float, после вычитания...

Сообщение Neodrop 09 июн 2010, 14:50

Не верно. 7 знаков после запятой.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Проблема с округлением float, после вычитания...

Сообщение magic3d 09 июн 2010, 15:32

2 Kann:
Мое последнее письмо для восстановления форума из-за вчерашнего отката. Другим тоже ведь надо знать... :)

Короче, вся проблема в том, что на float отдается всего 7 знаков, типа
100.1111 , 10.11111, 1.111111, 0.1111111
Последний раз редактировалось magic3d 09 июн 2010, 15:46, всего редактировалось 1 раз.
Аватара пользователя
magic3d
UNIт
 
Сообщения: 75
Зарегистрирован: 16 апр 2009, 11:43
Откуда: Днепр
  • Сайт

Re: Проблема с округлением float, после вычитания...

Сообщение Battle Angel Alita 09 июн 2010, 15:46

magic3d писал(а):у floate макс. - 7 знаков

кхм.. почитайте как-нит на досуге как устроено число с плавающей точкой
Мозг рака
Изображение
Аватара пользователя
Battle Angel Alita
UNIверсал
 
Сообщения: 476
Зарегистрирован: 25 ноя 2009, 14:52

Re: Проблема с округлением float, после вычитания...

Сообщение Neodrop 09 июн 2010, 15:52

magic3d писал(а):2 Kann:
Мое последнее письмо для восстановления форума из-за вчерашнего отката. Другим тоже ведь надо знать... :)

Короче, вся проблема в том, что на float отдается всего 7 знаков, типа
100.1111 , 10.11111, 1.111111, 0.1111111


Да перестаньте вы бредить то, мил человек.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Проблема с округлением float, после вычитания...

Сообщение DbIMok 09 июн 2010, 16:19

зря накинулись на человека, он прав )
По умолчанию точность значение Single составляет только 7 десятичных знаков, хотя во внутреннем представлении может использоваться до 9 цифр.

те всего у нас в распоряжении 7-9 значащих цифр независимо от того, где спозиционирована точка.
Последний раз редактировалось DbIMok 09 июн 2010, 16:23, всего редактировалось 1 раз.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Проблема с округлением float, после вычитания...

Сообщение magic3d 09 июн 2010, 16:23

Debug.Log(80.23456 + 20.12358); // = 100.3581 (на калькуляторе 100,35814)

Вот округление в этом варианте дала мне неприятности в вычислении. А при чем тут бред?
Последний раз редактировалось magic3d 09 июн 2010, 16:42, всего редактировалось 1 раз.
Аватара пользователя
magic3d
UNIт
 
Сообщения: 75
Зарегистрирован: 16 апр 2009, 11:43
Откуда: Днепр
  • Сайт

Re: Проблема с округлением float, после вычитания...

Сообщение Neodrop 09 июн 2010, 16:33

Цифры никуда не деваются после запятой. Это просто округление при приведении в String
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

След.

Вернуться в Скрипты

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

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