【问题标题】:Google Sheets Scripts Number Decimal Place Fomatting谷歌表格脚本数字小数位格式
【发布时间】:2017-11-14 20:30:09
【问题描述】:

使用 Google 表格脚本编辑器,我正在尝试创建一个自定义函数,该函数可以帮助我格式化具有一定小数位数的数字字符串。我需要将字符串设为数字类型,以便绘制数据。

我需要这个函数的原因是因为我有一个单元格内下拉菜单,它触发在单元格内显示具有不同小数位的不同数字集。因此,我不能依赖表格中的静态数字格式设置。

虽然这会返回我想要的小数位数...

function format(amt) { return amt.toFixed(2); }

toFixed() 创建一个文本字符串,因此该值不能用于图表(图表会显示“无数据”)。

我尝试了以下替代方案...

return parseFloat(amt); // var = number; can chart but cannot control decimal places
return parseFloat(amt).toFixed(2); //var = string; cannot chart
return parseInt(amt).toFixed(2); //var = string; cannot chart

谁能告诉我是否有一种方法可以创建一个自定义函数,让我可以控制我想要的小数位数,同时将其保持为数字字符串?

【问题讨论】:

    标签: javascript google-apps-script google-sheets


    【解决方案1】:
    function format(x, n){
        x = parseFloat(x);
        n = n || 2;
        return parseFloat(x.toFixed(n))
    }
    

    基本上你需要在调用 toFixed() 方法之后解析值,但你是在调用 toFixed() 方法之前解析它。

    通过上面的函数,你可以说format(amt)得到2位小数,或者format(2, n)得到n小数位

    【讨论】:

    • 谢谢!我刚刚对此进行了测试,并且大部分时间都有效。如果 x = 0.30,它将显示为 0.3,而不是 0.30。无论如何要为“n”保留尾随零?
    • 如果不将其转换回字符串,我认为这是不可能的
    • 看起来我必须创建一个隐藏列来存储数字并在可见列上显示字符串。再次感谢您的帮助!
    • 确定!如果我帮助了,请投票并接受我的回答,我很感激
    • 推荐对函数进行细微的更改:x = parseFloat(x.replace(/,/g, ''));,这将有助于处理 API / JSON 返回的格式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多