PDA

Просмотр полной версии : float truncate


Ariel
01.04.2008, 00:49
Вот тут (http://www.flasher.ru/forum/showthread.php?t=36257&highlight=trunc) внятно показано как транкейтить флоаты. Но! Ежели мы подадим на вход число формата 45.1004, то число обрежется до десятков, вместо сотен после запятой. Типа такого:
trace('GOOD > ' + Math.round(45.1234*100)/100);
trace('BAD > ' + Math.round(45.1004*100)/100);

Вопрос: как забарывать??
Thanks

iNils
01.04.2008, 01:25
Ни как. Number всегда будет удалять весящие нули.

Ariel
01.04.2008, 01:44
висящие..
А делать-то чего? В Стринг перегонять и ручками приписывать нолик?

MrPoma
01.04.2008, 01:53
Ручками.

Ariel
01.04.2008, 01:57
Ужас.
Как бы нам тогда ловчее сосчитать количество знаков после запятой? Соответственно, по результатам будет переводить в Стринг...

iNils
01.04.2008, 11:23
/**
* Метод, округляет число до ближайщего указанного в параметре degree разряда.
*
* @param num Округляемое число.
* @param degree Количество знаков после запятой.
* @return Округленное число (String).
*/
function round (num:Number, degree:Number):String {
var exponent:Number;
var str:String;
degree = Math.floor (degree);
if (degree == undefined || degree < 1) {
str = String (Math.round (num));
} else {
str = String (Math.round (num * Math.pow (10, degree)));
var a:String = str.substr (0, str.length - degree);
var b:String = str.substr (-degree, degree);
str = a + "." + b;
}
return str;
}