• ベストアンサー

小数点以下を消す計算

「ある数の小数点以下の値を消して、整数にする」という計算式を作るのは可能でしょうか? その際、以下の条件があります。 ・「ある数」には整数も含まれるものとします。 ・計算には四則しか使えません(√などは駄目)。 ご面倒でも、回答をお願いします。 EXCELではありません。

質問者が選んだベストアンサー

  • ベストアンサー
  • nitscape
  • ベストアンサー率30% (275/909)
回答No.1

結論から書きますと、できません。 使えるのが+*-/という四則演算のみですから、どのような計算をしても小数点以下がつく場合はつきます。 例えば1.9の小数点以下を取りたい場合は1.9+0.1か、1.9-0.9をすればいいですが、「1.9の場合は」という四則演算にはない考え方をしないといけません。「ある数」というのが事前に1.9や3.4のように決まっている数の場合は、それに合わせて1.9+0.1のような計算式を作ればいいですが、決まっていないとダメです。 Excelや各種プログラミング言語でしたら整数型に変換することでそのまま切り捨てることができますが、整数型というのも四則演算には含まれませんよね。 ということで結論としてできません。

asdfgzxcvb
質問者

お礼

やはり四則だけではできませんか。 プログラムに利用しようと思ったのですが、簡単な言語なので四則しか使えないのです。 丁寧な回答、本当に有難うございました。

その他の回答 (4)

  • pyon1956
  • ベストアンサー率35% (484/1350)
回答No.5

Aresは「物語作成ツール」であって、厳密にはプログラミング言語とはいえないでしょう。 もとになった言語HSPにはDLL呼び出し機能がありますから、あるいはできるかもしれませんが。 ちなみに BASICならround関数をつかえばいいだけですが。

  • betagamma
  • ベストアンサー率34% (195/558)
回答No.4

具体的には、何という言語なのでしょうか?あるいは、ご自分でコンパイラなどを作っていらっしゃるのでしょうか? 浮動小数点が実装されている言語では、普通は、小数点以下切捨てか四捨五入も実装されていると思うのですが・・・ No.2さん、No.3さんがおっしゃった方法は、いずれもよくやる手です。 mod(多くは%でかかれます)があれば、 x-(x%1) でできると思いますし、ビット演算もよく使われます。 あるいは、浮動小数点型とは別に、整数型が用意されている言語であれば、こういうのは無理でしょうか? int a=x; x-a 整数型のaにxを入れて、x-aを計算する、というやり方です。整数型の初期値に浮動小数点型の変数が来た場合、切り捨てて代入するという実装が行われていれば、これで可能かと思いますが。

asdfgzxcvb
質問者

お礼

回答有難うございます。 dachshund_coronさんのお礼にも書いたように、プログラミング言語はAresというものを使っています。 URLは http://softfruit.hp.infoseek.co.jp/ です。 betagammaのおっしゃる「浮動小数点」は機能にないようです。 せっかくの丁寧な回答なのですが、私が未熟なばかりに理解できず申し訳ありません。

回答No.3

x:realに対して [x]=int(x)=x-mod(x,1)が成り立ちますが これはプログラムに利用できないですか

asdfgzxcvb
質問者

お礼

回答有難うございます。 dachshund_coronさんへのお礼にも書きましたが、まだ初心者で複雑な言語を扱っていないので、せっかくの回答ですが全く理解できないのです。 申し訳ありません。

回答No.2

数学の世界であれば不可能な場合でも、プログラムの世界であれば、いちがいに不可能と言い切れるものでもないと思います。 たとえば、8ビットの数値を「右にシフト(2で割る)」したあとに、「左にシフト(2倍する)」という操作を行うと、末尾ビットが必ず「0」になります。 浮動少数の扱い方にもよりますが、これを応用して目的の計算式ができる可能性はあります。

asdfgzxcvb
質問者

お礼

回答有難うございます。 私は文系人間で、本当に簡単なプログラムしかやっていません。 プログラミング言語はAresというものを使っています。 VBなどはまだ手をつけられていません。 せっかくの回答なのですが、まだ応用などできるまでに勉強しておりませんので、ほとんど理解できずに申し訳ありません。

関連するQ&A