PDA

Просмотр полной версии : Нужно вывести текст (число) в формате.


AshedShadow
19.12.2008, 22:21
Есть число, например, 121.7
Есть кнопки, которые это число увеличивают или уменьшают, на 0.25
Причем текст сделан посредствам Dynamic Text, и просто выводится в определенном фрейме мувиклипа.

Вопрос: как сделать так, чтобы число отображалось не как 121,7, а как 121.700. Просто 00 добавлять - не катит, ибо если число будет 121.750 - то нужен один ноль.

То есть как сделать что-то похожее на div или mod, как в паскале/делфи?

Wolsh
19.12.2008, 23:14
var num:Number = 121.75;
var out_txt:TextField = this.createTextField("out_txt",10,100,100,200,20);
out_txt.text = masking(num, 3)

function masking(sourceNum:Number, afterDot:Number):String {
var twoParts:Array = sourceNum.toString().split(".");
var numText:String = twoParts[1];
while (numText.length<afterDot) {
numText += "0";
}
numText = twoParts[0]+"."+numText;
return numText;
}

silin
20.12.2008, 00:24
непринципиально, но на случай, если придет например 121. или 121, можно добавить
var numText:String = twoParts[1] || "0";

Wolsh
20.12.2008, 01:54
Ага, и еще проверку добавить на случай, если после точки будет слишком много знаков - придется округлять дробь)

AshedShadow
20.12.2008, 02:06
Огромное спасибо!
Просто очень долго бился с этой проблемой, сам писал огромные куски кода, которые работают криво)
Просто опыта на ActionScript мало еще, но буду нарабатывать.

p.s. попробую сам код чуток позже - о результатах отпишусь.
С уважением, Егор.

Wolsh
20.12.2008, 02:26
var num:Number = 121.6544444444444;
var out_txt:TextField = this.createTextField("out_txt", 10, 100, 100, 200, 20);
out_txt.text = masking(num, 3);

function masking(sourceNum:Number, afterDot:Number):String {
var twoParts:Array = sourceNum.toString().split(".");
var numText:String = twoParts[1] || "0";
while (numText.length>afterDot) {
numText = Math.round(Number(numText)/10).toString();
}
while (numText.length<afterDot) {
numText += "0";
}
numText = twoParts[0]+"."+numText;
return numText;
}