日本語プログラミング言語なでしこの公式掲示板

なでしこ の 掲示板

トップ 新規 検索

2017-05-16 12:05:01

Re③:除算の結果が・・・?

たいがあ さん

修正


#---ここから---

Memo1とはメモ
そのレイアウトは全体

除算テスト(16800,1.2)

待機

●除算テスト(a,b)
  c = a
  d = 0
  e = ""
  1でループ
    d = d + 1
    e = e & "{d}回目 ({c} - {b} = "
    c = c - b
    e = e & "{c}){改行}"
    もしc<bならば
      抜ける
  Memo1のテキスト = e & "{a} / {b} = {d} 余り{c}"
  戻る

#---ここまで---





検証ありがとうございます。

「ROUND」案もありがとうございます。

引き算で割り算関数を作ってみましたところ・・・何度実行しても「13167回目」でおかしくなります。

なぞは深まるばかりです・・・


#---ここから---

Memo1とはメモ
そのレイアウトは全体

除算テスト(16800,1.2)

待機

●除算テスト(a,b)
  c = a
  d = 0
  e = ""
  1でループ
    d = d + 1
    e = e & "{d}回目 ({c} - {b} = "
    c = c - b
    e = e & "{c}){改行}"
    もしc      抜ける
  Memo1のテキスト = e & "{a} / {b} = {d} 余り{c}"
  戻る

#---ここまで---


こちら(Win7 + nadesiko 1.563)でも結果は同じでした。ちょっと実験してみました。

#---ここから---

a = 16800 / 1.2
aを表示            #14000
小数部分(a)を表示  #0.999999...
切り捨て(a)を表示  #13999

b = aの整数部分
bを表示            #13999

c = ROUND(a)

cの小数部分を表示  #14000
切り捨て(c)を表示  #0

#---ここまで---

上記、コメントに書いた様な値になってます。なでしこは数値を書いた場合
実数扱いなので、計算結果が割り切れていても、実数で持っている感じです。
(ただ、最初の計算結果aは14000と表示されるのがなぞなんですが…)

aの整数部分だけを抜き出すと13999になっているので、実際に計算結果は
13999.99999999...となっていて、表示する場合にまるめて表示している
可能性があります。

これを避ける方法はROUND()関数を使うぐらいしか思い当たりません。一番
近い整数に丸められるので、ROUND(a)が14000になります。



(編集パスワード送信)

子記事

親記事 (No.173)
返信した記事(元) (No.177)

この内容(No.178)に返信

この内容(No.178)をダウンロード

この内容(No.178)のテキスト表示





www.eznavi.net