ActionScript/Javascript 上的 ToFixed 函数

ToFixed function on ActionScript/Javascript

第一次使用 Whosebug,但我真的需要帮助来重建这个字符串。

所以基本上它在 Actionscript 中,我需要重建 Millions-string 以输出为 1.23M,AKA 包含数百万,旁边有数千,因为目前它只显示 1M。我听说 toFixed 可以解决问题,但我似乎无法让它发挥作用。

任何示例都会有所帮助,谢谢

        public static function balanceToString(value:int):String
        {
            var suffix:String = "";
            var resultValue:int = value;
            if (value >= 1000000)
            {
                resultValue = Math.floor(resultValue / 1000000);
                resultValue.toFixed(4);
                suffix = "M";
            }
            else if (value >= 100000)
            {
                resultValue = Math.floor(resultValue / 1000);
                suffix = "K";
            }

            return "" + resultValue.toString() + suffix;
        }

您正在将签名中的数字转换为 int。

尝试改用数字。

    public static function balanceToString(value:Number):String
    {
        var suffix:String = "";
        var resultValue:Number = value;
        if (value >= 1000000)
        {
            resultValue = Math.floor(resultValue / 1000000);
            resultValue.toFixed(4);
            suffix = "M";
        }
        else if (value >= 100000)
        {
            resultValue = Math.floor(resultValue / 1000);
            suffix = "K";
        }

        return "" + resultValue.toString() + suffix;
    }

我猜是这样的。

实施:

public static function balanceToString(value:int):String
{
    var suffix:String = "";
    var divisor:Number = 1;
    var precision:Number = 0;
    
    if (value >= 100000)
    {
        // This will display 123456 as 0.12M as well.
        divisor = 1000000;
        precision = 2;
        suffix = "M";
    }
    else if (value >= 500)
    {
        // This will display 543 as 0.5K.
        divisor = 1000;
        precision = 1;
        suffix = "K";
    }
    
    // This allows you to control, how many digits to display after
    // the dot . separator with regard to how big the actual number is.
    precision = Math.round(Math.log(divisor / value) / Math.LN10) + precision;
    precision = Math.min(2, Math.max(0, precision));
    
    // This is the proper use of .toFixed(...) method.
    return (value / divisor).toFixed(precision) + suffix;
}

用法:

trace(balanceToString(12));         // 12
trace(balanceToString(123));        // 123
trace(balanceToString(543));        // 0.5K
trace(balanceToString(567));        // 0.6K
trace(balanceToString(1234));       // 1.2K
trace(balanceToString(12345));      // 12K
trace(balanceToString(123456));     // 0.12M
trace(balanceToString(1234567));    // 1.23M
trace(balanceToString(12345678));   // 12.3M
trace(balanceToString(123456789));  // 123M