SA-MP Forums Archive
Числа с плавающей точкой. - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Числа с плавающей точкой. (/showthread.php?tid=241692)



Числа с плавающей точкой. - Norck - 18.03.2011

Приветствую. Первый раз столкнулся с такого рода проблемой.
Строка:
pawn Код:
printf("%f | %f | %f | %f | %f | %f",10.1,20.1,30.1,40.1,50.1,60.1);
Выводит результат:
Код:
10.100000 | 20.100000 | 30.100000 | 40.099998 | 50.099998 | 60.099998
Первые три значения выводятся корректно, последние три - нет.
Почему?


Re: Числа с плавающей точкой. - Radius - 18.03.2011

По дефолту %f ставит 6 чисел после точки. Если хочешь, чтобы была одна цифра (после точки) - %.1f, две - %.2f, три - %.3f


Re: Числа с плавающей точкой. - Norck - 18.03.2011

Проблема НЕ в количестве чисел после точки, а в самом выводе.
Если попытаться вывести 40.1 как
pawn Код:
printf("%.1f",40.1);
То выведет НЕ 40.1, а 40.0 !

Хотя 10.1, 20.1, 30.1 выводит нормально.


Re: Числа с плавающей точкой. - Stepashka - 18.03.2011

А что удивительного?
Почитайты про основы програмирования и о том как процессоры оперируют числами.


Re: Числа с плавающей точкой. - Norck - 18.03.2011

Если бы для меня здесь не было бы ничего удивительного, я бы, очевидно, не создавал бы данную тему и не задавал бы подобный вопрос. Если на то пошло, то, будьте так добры, выражайтесь конкретнее, если у Вас имеются какие-либо стоящие сведения или предположения по данному вопросу.


Re: Числа с плавающей точкой. - Stepashka - 18.03.2011

Процессоры не умеют работать с числами с плавающей запятой, они могут оперирывать только целыми числами, для работы с дробными на уровне ядра идет их "интерпретация".
Погрешность которая вас удивила последствия этой "интерпретации", и от неё не избавиться.


Re: Числа с плавающей точкой. - Norck - 18.03.2011

Весьма благодарен за столь содержательный ответ. Тема более не актуальна.


Re: Числа с плавающей точкой. - White_116 - 24.03.2011

Как округлить число Alpha до 0.1 тут new Float:Raznica=(Alpha-Beta);
Есть ли StrFloat или как это обойти


Re: Числа с плавающей точкой. - Makar93 - 24.03.2011

Quote:
Originally Posted by White_116
Посмотреть сообщение
Как округлить число Alpha до 0.1 тут new Float:Raznica=(Alpha-Beta);
Есть ли StrFloat или как это обойти
floatround?


Re: Числа с плавающей точкой. - White_116 - 24.03.2011

а если до 0.01