Quest3D - Русскоязычное сообщество

Quest3D => Программирование => Тема начата: Amigo от 18 Декабря 2008, 10:41:53



Название: Удаление дробной части числа
Отправлено: Amigo от 18 Декабря 2008, 10:41:53
Всем привет. Ктонить подскажет как можно выполнить сие действие? Например, есть число 34,56 то в итоге должно остаться 34.
На языке было бы чтото вроде
double x = 34.56;
int y;
y = x;
а тут хз.
Может нода какаято есть, на вход которой идет дробная часть, на выходе целая? Типа VALUE OPERATOR, но там только text to integer, а мне нужно double to integer.


Название: Re: Удаление дробной части числа
Отправлено: Viik от 18 Декабря 2008, 11:24:33
В ченеле Expression value есть функция FLOOR(A), она возвращает целую часть числа.


Название: Re: Удаление дробной части числа
Отправлено: Amigo от 18 Декабря 2008, 12:01:14
спасибо!


Название: Re: Удаление дробной части числа
Отправлено: Const_47 от 18 Декабря 2008, 21:26:39
А что делать если мне нужна фиксированная точность?
Ну например три цифры после точки?
То есть, что бы даже вот такое 1 выглядело вот так 1.000 


Название: Re: Удаление дробной части числа
Отправлено: Viik от 18 Декабря 2008, 23:58:42
тогда делаем вот так:
A - исходное число
X - искомое число
Variant 1:
B = FLOOR(A*1000)
X = B/1000
Отрезаеться все кроме 3-ч чисел дробной части.

Variant 2:
B = ROUND(A*1000)
X = B/1000;
Здесь значение округляеться до ближайшего.

Variant 3:
 Там еще есть битовые операции, я с ними не разбирался но поидее можно ограничить точность с помощью них.


Название: Re: Удаление дробной части числа
Отправлено: Const_47 от 19 Декабря 2008, 22:30:50
Тут я скорее не так задал вопрос, мне фиксированная точность не нужна для просчетов, а элементарно вывести результат на экран с такой точностю.

0.010*1000 = 10
floor(10) = 10

10/1000 = 0.010

из чего Квест мне 100% сделает 0.01

Битовые операции тут не помогут.


Есть конешно вариант, что-то типа if x < 0.011 но это через
жо..
Тут бы больше подошло что то вроде флагов форматирования потока. Пока смотрю Lua String.