1.005を小数点以下2桁に丸める
なでしこさんで 1.005を 2で小数点四捨五入すると 1になる。
JavaScriptの (1.005).toFixed(2)で 1.00。
同じく Math.round(1.005*100)/100で 1。
どうやら JacaScriptで 1.005*100が 100.49999999999999になってしまうのが原因みたい。
ネットで調べると 100を掛けて 100で割る代わりに、指数を +2して四捨五入して指数を -2する手もあるそうな。
なでしこさんで作ってみる。
//固定小数点で丸める関数
●(元実数を指定桁で)小数点ソロエとは
指定桁は(指定桁-0)または0。
もし、元実数が0未満ならば
元実数は元実数の絶対値。
負数フラグとは変数=「-」。
ここまで//→正の数
リターンとは変数=元実数&「e」&指定桁の四捨五入を文字列変換//したもの
//例0.0123→小数部3桁→12の場合
もし、(リターンの文字数)が指定桁以下ならば
リターンはリターンを指定桁+1でゼロ埋め//したもの
ここまで//→上記例の場合数字4個で0012
もし、(指定桁)ならば
リターンはリターンの(リターンの文字数)+1-指定桁に「.」を文字挿入💧//したもの
もし、(負数フラグ)ならば
負数フラグ&リターンを戻す。違えば
リターンを戻す💧
ここまで//小数点ソロエ
#元実数の絶対値は1e-6以上1e21未満。
1234.5を0で小数点ソロエして、表示する。 //→1235
129.5を0で小数点ソロエして、表示する。 //→130
1.295を2で小数点ソロエして、表示する。 //→1.30
100.5を0で小数点ソロエして、表示する。 //→101
1.005を2で小数点ソロエして、表示する。 //→1.01
0.0123を3で小数点ソロエして、表示する。 //→0.012
1.23e-7を8で小数点ソロエして、表示する。 //→0.00000NaN
最後がおかしい(NaN)けど、0.000 001未満の数値を扱って小数点以下 7桁以上の固定表記で表にする…なんて状況は無いじゃろ、ということでw
入力は 1e-6以上 1e21未満にしてネ。
//日本語プログラミング言語なでしこさん公式↓