逆引きFormula 2.0 に戻る

Twitter でこんなネタがありました。そもそもドル表示にする前に丸めで苦労したとのこと。本件はそもそもドル表示したかったとのことで、すでに解決している内容ではあります。ただ、小数点以下○桁で丸めたいという要求はあると思うので紹介しておきます。

https://twitter.com/staban3/status/1548028908800393216

  1. まず最初にあったドル表示をやってみます。今回は Formula の話だったので、オリジナル数値をそのまま持ってきています。以前は Formula にフォーマットを指定するのは面倒でした。一度、数値プロパティに変換し、フォーマットを指定した後で、再度 Formula に戻すという裏技が必要でした。今は、Formula の結果が数値だとわかると Number format の設定ができるようになっていました。実際、US Dollar に設定すると確かに、$3.14 のように小数点以下二桁で丸められていました。

    prop("オリジナル数値").round()
    

    Untitled

  2. 丸めの関数としては round があります。Ruby などの言語では第二引数で何桁目を丸めるか指定できたりするのですが、Notion の Formula は小数点以下を丸めるだけでした。

    prop("オリジナル数値").round()
    

    round

  3. 小数点以下2桁で丸めたいなら、先に100倍して丸め処理を行い、その後に 100 で割ればいいです。小数点以下の桁数を変えたいときは 100 の数値を変えればよいです。

    (prop("オリジナル数値") * 100).round() / 100
    

    *, multiplyround/, divide

  4. この手順だと小数点以下の数値がなかったり、桁数が足りない場合の0は表示されません。どうしても表示したいという場合には、文字列にするしかありません。上で作った数値に 0.001 を足した上で、最後の文字を消すという手順です。ただ、文字列だと左寄せになってしまうので、カッコ悪いですね。ここまでやる必要はない気はします。

    /* 丸め数字 + 0.001 を計算 */
    (((prop("オリジナル数値") * 100).round() / 100) + 0.001)
     /* 文字列に変換 */
     .format()
     /* 最後の一文字を削除 */
     .replace(".$", "")
    

    *, multiplyround/, divide+, addformatreplace

丸めテスト