🧮

dart.mathを使って数を操る(対数・絶対値・小数点以下の固定など)

2023/11/01に公開

何でそんな変換が要るのか

「宇宙の誕生から終わりなき「今」まで」をキャッチコピーに
総合年表を作っている。
年表といったら、ふつう事象が単にずらっと並んでいる、というイメージだろうが、
この年表では時間軸をちゃんと設定して、距離を取った表示をする。
それも最終的には地図上、地球儀上にプロットすることで、
空間的距離も表現するぞ〜、
しかもその空間内を歩き回れるようにするぞ〜
と、もはや妄想の域に達している。
それらを実現するために、いわゆる年表を構成する年月日を操作している。

まずは

import 'dart:math' as math;

なんでas mathにしているかはlogのところでわかります。

doubleで計算して、四捨五入でintにする。

('計算式').round()

絶対値を取る

'正負の値'.abs()

対数を取る

1日に何件も「事象」が発生する21世紀と、億年単位の過去を同一軸では表しきれないときに使う。

math.log('正の値')

mathなしでlogだけ書くと、どうやら履歴のほうのlog扱いになるらしく、
それはStringだ、とか、計算式の中に入れるな、とかいろいろ言われる。
mathだと明示するために、importのところでas mathをつけている。

小数点以下4桁で固定する

double.parse(('たらたら長い小数').toStringAsFixed(4))

どうしてこんなにめんどうくさいのかわからないが、
まず小数点以下4桁で固定しているのが後半、なぜかString。
それをdoubleに戻しているのが前半。
ふしぎ〜。

で、こねくり回した数字をどう活用するかは、また別のお話。

Flutter大学

Discussion