• 締切済み

ruby の BigDecimal を 使った計算

notnotの回答

  • notnot
  • ベストアンサー率47% (4845/10255)
回答No.2

簡単には、数値をすべて BigDecimal("1",1000) のように値と有効桁数で表して、あとは普通に計算します。 big1=BigDecimal("1",1000) big7=BigDecimal("7",1000) puts big1/big7 きちんとやるにはマニュアルを参照してください。マニュアルを理解するには「有効数値とはどういうことか」の知識が要りますが、そのあたりは大丈夫ですよね。 http://www.ruby-lang.org/ja/man/html/BigDecimal.html

aaaiiyuda
質問者

補足

最後に、この文章をルビーで計算したら ”1”と”7”のところが青くなりました。 これは何か設定が必要なのでしょうか?

関連するQ&A

  • BigDecimal

    頭が混乱してしまったのですが… ずばりBigDecimalを使用したとき、仮数部は最大何桁になるのでしょうか?BigDecimalの内部仕様まで今まで考えたことがなかったのですが… FLOATやDoubleのどはリファレンスにはっきり明記されているのですが… すみませんどなたか助けてください。お願い致します。

    • ベストアンサー
    • Java
  • BigDecimal小数計算について

    プログラミングに関する知識が皆無の初心者です。 「はじめてのandroidアプリプログラミング」という本に従って電卓のアプリを作っているのですが、小数点を含む計算ができず、困っております。 演算記号前の数字が小数で、演算記号後の数字が整数であるならば 1.5*2=3 と正しく計算ができますが、 演算記号後が小数点を含む数だと、計算されず演算記号後に入力した数字が 2*1.5=1.5 と、そのまま表示されてしまいます。 小数の表示は if (mOp == R.id.button_decimal || mCalcValue.scale() != 0) {  // 小数点を含む場合  BigDecimal bd = new BigDecimal(BigInteger.valueOf(value),mCalcValue.scale() + 1);  mCalcValue = mCalcValue.add(bd); } else {  // それ以外の場合  // 10倍  mCalcValue = mCalcValue.multiply(BigDecimal.TEN);  // 足す  mCalcValue = mCalcValue.add(new BigDecimal(value)); } で、 イコールを押したときの動作は public void onEqualClick(View view) {  switch (mOp) {   case R.id.button_plus:   // 足し算   mCalcValue = mPreValue.add(mCalcValue);   break;   case R.id.button_subtract:   // 引き算   mCalcValue = mPreValue.subtract(mCalcValue);   break;   case R.id.button_multiply:   // かけ算   mCalcValue = mPreValue.multiply(mCalcValue);   break;   case R.id.button_divide:   // 現在の値が0ではないかチェック   if (!BigDecimal.ZERO.equals(mCalcValue)) {    // 割り算    mCalcValue = mPreValue.divide(mCalcValue, 11,    BigDecimal.ROUND_HALF_UP);   }  break; } です。 どこのコードが原因かもわからず、どこを質問文に掲示すればアドバイスいただきやすいかもわからなかったため、質問文に不足あるかもしれません。 すみませんがよろしくお願いします。

    • ベストアンサー
    • Java
  • ruby の Σ計算 

    ruby で (i=o , 10 ) Σ i ** 2 を計算させるにはどうすればいいのでしょうか? ruby で 読み込んで計算させたいです。 0^2+1^2+3^2+....+2^10=??

  • 計算する度にBigDecimalオブジェクト作成?

    javaのDouble型の足し算をするには、BigDecimalを使わなければ 正確な数値が得られない、ということで使用したのですが、 毎回、小数点の足し算をする度に、 負荷のかかるnew宣言でBigDecimalのインスタンスを作りaddメソッドで計算するというはどうも非効率に思ってしまうのです、、; javaでの小数点の足し算は皆さん通常どうやっているのでしょうか?

    • ベストアンサー
    • Java
  • rubyのエラー out of float range の原因

    rubyでout of float range と算出されました。 これは計算の桁が大きすぎるためなのでしょうか。 ルビーは計算の桁がメモリーの許す限り無限と聞いたのですが。 どういう意味なのか教えていただきたいです。

    • ベストアンサー
    • Ruby
  • 整数0を値とするBigDecimal

    のオブジェクトを作るときに BigDecimal bd=new BigDecimal(0); のようにnewを使わない方法は有るでしょうか?

    • ベストアンサー
    • Java
  • ruby で C(コンビネーション) の 計算

    rubyで10C2を計算させるにはどう書いたらいいのでしょうか? while を使うことはわかりました、、、

    • ベストアンサー
    • Ruby
  • BigDecimalの計算方法に関して

    現在Javaの勉強中です。 BigDecimalの計算を以下のように書いて 実行した場合正常に処理されます。 でも、もっとシンプルに書けると思うのですが リファレンスを見ててもさっぱりわかりません 何かご存知の方居ましたらご教授お願いします。 BigDecimal A = new BigDecimal(7); BigDecimal B = new BigDecimal(5); BigDecimal Total = new BigDecimal(0); Total = A.multiply(B);

    • ベストアンサー
    • Java
  • RUBY の 分数の 精度

    分数の足し算をしたいのですが。 1.0/3 = 0.33333333333333 の15桁では、精度が足りません。 精度を1000桁にしたいのですがどうしたらいいのでしょうか? 1.0/3 = 0.3333333333333333.....1000桁。

    • ベストアンサー
    • Ruby
  • BigDecimalの比較

    例えばBigDecimal型の100.00 100.05 100.10 100.20を比較した時 100.10を基準で考えた場合+-0.05以内ならtrue(100.05の時) +-0.05を超えた場合はfalse(100.00、100.20の時) 効率よく処理するにはどうすればよいでしょうか? 大変お手数ですが宜しくお願い致します。