PDA

Просмотр полной версии : Math.round() и 0


PocketDevil
07.08.2008, 18:46
Есть функция округления математическая

a = 2.996000
t= Math.pow(10,2);
a = Math.round(a*t)/t
trace(a)

В результате мы получим просто 3.
А как можно сделать так чтобы отображалось не 3, а 3.00
И не 1.5, а 1.50.

Спасибо

chingachgoog
07.08.2008, 19:40
Перевести число в строку и следить чтобы после точки было два символа - если нет, то добавлять символ нуля (весь вопрос ведь в ОТОБРАЖЕНИИ)

PocketDevil
07.08.2008, 20:36
Ну да, но тут просто точка не всегда остаётся

olexandr
07.08.2008, 23:50
Может быть, какой то вариант и не учел, но что-то вроде этого должно получиться

function formatNumber(n:Number):String {
var arr:Array = (Math.round(n*100)/100).toString().split('.');
var str:String = arr[0]+'.';
if (arr.length>1) {
str += (arr[1].length>1) ? arr[1] : arr[1]+'0';
} else {
str += '00';
}
return str;
}

trace(formatNumber(3)); //3.00
trace(formatNumber(3.5)); //3.50
trace(formatNumber(2.743)); //2.74
trace(formatNumber(.1)); //0.10

Жень Шень
08.08.2008, 10:56
Привет!
Подойдёт?
a = 2.456000
t= Math.pow(10,2);
n = Math.round(a*t)/t
a= Math.floor(n)+"."+String(n*100).substr(-2)
trace(a)
Дополнено.
Или с любой точностью после запятой(точки):
a = 2.99600
c = 4
t= Math.pow(10,c);
n = Math.round(a*t)/t
a= Math.floor(n)+"."+String(n*t).substr(-c)
trace(a)

PocketDevil
11.08.2008, 14:08
Спасибо огромное!