Float/ru

К типу данных с плавающей точкой относятся 32-битные числа в IEEE-754 форме, то есть числа с плавающей точкой относятся к вещественному типу.
Если Вам нужна десятичная точка в своём числе, то примените вещественный тип чисел . 
Диапазон значений в пределах от 1.175494351E-38 до 3.402823466E+38 .
Они могут быть указаны в научной нотации, наподобие 2.6E-5 .
Если функция требует плавающую точку в качестве параметра, и число является целым числом (например, 5), то не забудьте добавить .0 - так создается (в нашем примере, 5.0).
Если вы делите 2 константы, не забудьте определить их вещественными числами, иначе ваш результат может получить округление. А еще лучше, вычислять математику на калькуляторе и сохранить на сервере несколько циклов.
== Пример ==
<lsl>float min = 1.175494351E-38;
float max = 3.402823466E+38;
float sci = 2.6E-5;
float sci_a = 2.6E+3;
float sci_b = 2.6E3;
float sci_c = 26000.E-1;
float f = 2600;//неявное приведение к типу 'float'
float E = 85.34859;
float cast = (float)"42";//явное приведение к типу 'float'
float Infintity = (float)"inf"; //-- могут быть отрицательными, приведет к ошибке, если математика оценивалась в LSO, см. 'предостережения' ниже
float NotANumber = (float)"nan"; //-- могут быть отрицательными, приведет к ошибке, если математика оценивалась в LSO, см. 'предостережения' ниже
</lsl>
== Полезные фрагменты ==
Если вам нужно для проверки произвольных float без ограничений, то следующая функция идеально здесь подходит:
<lsl>integer isValidFloat(string s) { return (string)((float)s) != (string)((float)("-" + llStringTrim(s, STRING_TRIM_HEAD))); }</lsl>
Тем не менее, следующий фрагмент более эффективен, но проходит с отмеченными оговорками. Если это не проблема для Вас, то это рекомендуемый вариант, особенно в режиме скрипта Mono:
<lsl>integer isValidFloat(string s) { return (float)(s + "1") != 0.0; }</lsl>
Предостережения:
* Под LSO-LSL научная нотация (экспоненциальная) с показателем больше 38 не удаётся (вкрадывается математическая ошибка). Mono не влияет, так как поддерживает infinity
* Под Mono и LSO-LSL вы можете обнаружить странные результаты, если имеете дело со строкой содержащей более 9 знаков после запятой. Помните, что приведение (распределение) строки в LSL дает только до 6 знаков безопасно, и вследствие человеческого фактора редко будет точной, но также малые значения обычно не все, что полезно.
* "nan", "inf" и их негативы есть специальными значениями текста, которые можно привести из строки (с любым пробелами или конечными символами). Это значение приведет к математической ошибке, когда переменная оценивается в LSO. Если Вы разбираете пользовательские данные, путем приведения строки в обращении, используйте следующий код (заменив vStrDta с вашим именем переменной String) см. SVC-6847
** <lsl>(float)llList2String( llParseStringKeepNulls( llToLower( llStringTrim( vStrDta, STRING_TRIM ) ), ["inf", "nan"], [] ), 0 )</lsl>
== Float-to-String ==
Есть несколько способов преобразования с в . Первый - приведение в строку ()(), что, однако, имеет недостаток округления и ограничивается до шести знаков после точки. Некоторые функции были написаны для обеспечения больших возможностей. Они делятся на две категории, без потерь (Lossless functions) и с потерями (Lossy functions).
 Функции с потерями (Lossy functions)
Название 	title="Infinity / NaN support" inf/nan	Округление	Сокращение	Пояснения
Typecast 	Да 	Да 	Нет 	(float)float_valueдает только в режиме "Mono" скрипта 6 знаков точности.
Format Decimal	Нет 	Да 	Нет 	
Float2String 	Нет 	Да 	Да 	
 Функции без потерь (Lossless functions)
Название 	Скорость 	Обратимость	title="Infinity / NaN support" inf/nan support	PI PI 	Пояснения
Float2Hex	Быстрая 	(float) 	Нет 	0x6487ED5p-25	Поскольку выход в шестнадцатеричной научной записи, это не совсем визуально читабельно.
Float2Sci	Медленная 	(float) 	Нет 	3.1415925 	Полезно, если вы хотите, чтобы результат был без потерь и визуально читабельный, происходит за счет низкой скорости.
FUIS 	Быстрейшая	SIUF 	Нет 	"QEkP2g" 	Вовсе не читабельно. Гарантированно всегда использование шести символов.
*Infinity (бесконечность) доступна только в Mono. 
== См. также ==
Статьи
*LSL Примеры: Format Decimal