「なでしこv1」開発掲示板

なでしこv1のバグや要望を書き込む掲示板
[一覧へ] > (@371) [低] [解決]
@371■ (#1158) 剰余の計算結果がマイナスになる - catch (2009-09-04 00:41) /低 未処理
【症状】大きな数を整数でわり算し、その余りを計算すると、結果がマイナスになる
【再現方法】
41661611100と18の剰余。
それを言う。
出力:-4

-- OpenOffice.orgによる計算結果 --
被除数     除数  余り
41661611100  17  15
41661611100  18  0
41661611100  19  13
41661611100  20  0
41661611100  21  18
41661611100  22  10
41661611100  23  15
41661611100  24  12
41661611100  25  0
41661611100  26  18
41661611100  27  9
41661611100  28  4
41661611100  29  9


【要望】どのような解決が望ましいか?
・正しい計算結果を返す
or
・被除数が大きすぎるならエラーを表示

【バージョン】
1_5321 および 1_518
【その他】

(#1159) 桁あふれです - U D (2009-09-04 11:32) /低 未処理
桁あふれで 41661611100 が -1288061860 として処理されていますね。

Aとは整数=41661611100
Bとは数値=41661611100
Aを表示
Bを表示

さて、どうしたものか・・・

(#1160) バグではない - catch (2009-09-04 13:01) /低 未処理
UDさん、コメントありがとうございます。
計算間違いではないわけですね。
分かりました。

http://nadesi.com/doc/reference/syntax/1-2-1-num.htm

整数の値の範囲って、どこかに説明がありますかね?

(#1510) 一応リファレンスに書いた - U D (2010-03-10 20:07) /低 解決
> 整数の値の範囲って、どこかに説明がありますかね?

一応リファレンスに書きました:
[なでしこリファレンス - 整数]
 http://nadesi.com/man/page/%E6%95%B4%E6%95%B0

元々 Delphi が扱える以上の精度での計算は無理だと思いますので、
この件は、リファレンスに整数の値の範囲を書いて「解決」としておきます。
# trac の"Wontfix"(修正しない)みたいなのがあればいいのですが。

多倍長精度での計算が必要な場合は、多倍長計算ライブラリを利用するか、
 Windows 付属の電卓と連携するなど他の方法を取るのがよいでしょう。

(#1158)へ返信する:

👆お手数ですが、いたずら防止のために、「真夏」の読み方を記入してください。

編集時に使うキーを入力(省略可能)

画像ファイル(最大300KB)を添付可能