Challenge programming

JavaScript

小数点の切り捨て | Decimal point truncation

HTML、Javascript <body>
<section>
<p>円周率は(pi)
<span class="yellow"><script>document.write(Math.PI);</script></span>
</p>
<p>ふつうに切り捨てをすると
<span class="red"><script>document.write(Math.floor(Math.PI))</script></span>
になります。</p>
</section>
</body>
CSS .yellow {
background: linear-gradient(transparent 65%, yellow 65%);
}
.red {
color: red;
}

円周率は(pi)

ふつうに切り捨てをすると になります。

解説

Math.PIは円周率を表すプロパティです。

Mathオブジェクトのfloorメソッドは、()内の数値の小数点以下を切り捨てます。


小数点第〇位で切り捨てるには? | How to truncate at the 0th decimal place?

切り捨てメソッドはfloorしかありません。であるならば元の数字の小数点を、切り捨てたい位の手前まで動かせばいいと考えます。そこで・・・

➀10をいくつか掛ける。いくつかには小数点以下第〇位の〇が入る。
⇒  今回、第3位以下で切り捨てるので、10X10X10

➁元の数字に➀の計算結果を掛ける。これで小数点が移動になる。
⇒ 3.14159を10X10X10と処理し、3141.59

➂小数点が移動した数字の、小数点を切り捨てる。(floorメソッドを使う)
⇒ 3141.59をfloorにて小数点以下を切り捨て、3141となります。

➃小数点以下を切り捨てた数字を、➀の計算結果で割る。小数点を元の位置に戻す。
⇒ 3141を1000で割って、3.141となります。

  
HTML,JavaScript <section>
<p>小数点第3位で切り捨てると | If you truncate to the third decimal place <span class="red" id="output"></span>です。</p>

<script>
var point = function(num, digit){
var time = Math.pow(10, digit);
return Math.floor(num * time) / time;
}
document.getElementById('output').textContent = point(Math.PI, 3);
</script>

小数点第3位で切り捨てると | If you truncate to the third decimal place です。

 

解説

var point = function(num, digit){ パラメータを2つ受け取ることになっており、1つ目が小数点第〇位から切り捨てたい元の数字、2つ目が小数点第〇位の〇の部分を指定する数字となっています。
var time = Math.pow(10, digit);  Math.pow(a,b)はaをb乗するということになります。この行では10をdigit回掛けることを行い、その計算結果を変数timeに代入しています。
return Math.floor(num * time) / time; 計算結果を呼び出し元にリターンしています。
document.getElementById('output').textContent = point(Math.PI, 3); 「 point(Math.PI, 3);」 → 今回、このように呼び出した場合は、digitには「3」が代入されるので10×10×10=1000が変数timeに代入されます。

計算経緯

numはMath.PI(実際の数値は3.1415926...)で、これを変数time倍するので、3.1415926 × 1000 = 3141.59

3141.59をfloorにて小数点以下を切り捨て、3141となります。

3141を変数time(1000)で割って、3.141となります。



この本を参考にして学び、完成させることができました。しかし、ここではプログラミング初心者の私が詳しく解説することは、おこがましく、難しく出来ません(ToT)
その点、この本では丁寧な解説が載っていますので、解説とともにコードを書き、完成させればより深く学ぶことができます(^.^)、実際、初心者の私でもわかりやすかったです。身に付け消えないスキルが3,000円弱ならコスパよく、買っておいてよかったと満足してます。


私は人から丁寧に教わりたい、という人にはこちらもどうぞ。

キャリアアップに必要なスキルを取得しよう。

オンラインで受講ができるスクールですので、全国どこからでも。

ぺージの先頭に戻る(Return to top of page)


©2020年9月 Challenge programming

プライバシーポリシー