HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
1022
毬藻桁数の多い数の計算(足し算、引き算)がしたい4解決


毬藻

リンク

2009/10/22(Thu) 01:14:52|NO.28480

HSPのint型の変数に桁数の多い数字を入れると、ちゃんと認識せずに10桁くらいの変な数になってしまいます。
桁数の多い数同士の計算がしたいのですが、どうすれば良いでしょうか?
答えをint型の変数に入れるのが不可能であれば、16進数で表すことも考えています。

a=99999999999999999999999999999 b=99999999999999999999999999999 mes a+b mes a-b
結果(間違いの答えが出る):
-536870914
1610612736



この記事に返信する


SYAM

リンク

2009/10/22(Thu) 10:29:41|NO.28491

やってみて判っているとおもいますが、確かにあまり大きな値は変数に格納できず、もちろん計算もできません。
数値の限界については「プログラミング・マニュアル」の「変数」の項に載っていますから見ておいてください。

どうしてもやろうと思ったら、各桁を配列の要素にするか、または文字列として扱うかして、「値を表現する方法」を自分で作り出し、その足し算、引き算のプログラムを自分で組むことになります。
ちょっくら面倒ですが、足し算引き算程度ならそう難しくないでしょう。

ついでに、(これは本筋と関係のない提案ですが)
16進法というのは 数値を表現する方法の一つですから解決になりません。
そのようにも考えている、ということはまだ「数値」「10進法」「16進法」…の関係を誤解している可能性が高いので、この機会にもういちど確認してみるといいと思います。



a

リンク

2009/10/22(Thu) 10:43:18|NO.28492




毬藻

リンク

2009/10/22(Thu) 12:37:24|NO.28493

回答をもとにいろいろ試してみましたが理想の形にできませんでした。
計算は諦めて別の方法を考えてみようと思います。ありがとうございました。



名無し

リンク

2009/10/22(Thu) 19:55:44|NO.28497

longintというプラグインを使えばできますよ。
http://hp.vector.co.jp/authors/VA034288/index.html



ONION software Copyright 1997-2023(c) All rights reserved.