締切済み ruby の BigDecimal を 使った計算 2010/02/13 20:04 ruby の BigDecimal を 使った計算 をしたいです。 そこで 1/7をBigDecimalでどうやって計算するのか見せてほしいです。 精度を1000桁でお願いします。 みんなの回答 (5) 専門家の回答 みんなの回答 notnot ベストアンサー率47% (4903/10364) 2010/02/13 22:53 回答No.5 Rubyの入門書は何か読んでますか? BigDecimalライブラリを使うという話なので、 require "bigdecimal" を書かないといけません。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 notnot ベストアンサー率47% (4903/10364) 2010/02/13 22:00 回答No.4 >”1”と”7”のところが青くなりました。 意味がわかりません。 結果は望み通り表示されましたか? 質問者 補足 2010/02/13 22:03 big1=BigDecimal("1",1000) big7=BigDecimal("7",1000) puts big1/big7 これを計算させましたが、NoMethodErrorとなり表示されませんでした。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 koko_u_u ベストアンサー率18% (216/1139) 2010/02/13 21:30 回答No.3 >puts (1.0 / 300)**600 >これを計算させると。0.0になってしまいます。 そうでしょうね。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 notnot ベストアンサー率47% (4903/10364) 2010/02/13 21:10 回答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 質問者 補足 2010/02/13 21:27 最後に、この文章をルビーで計算したら ”1”と”7”のところが青くなりました。 これは何か設定が必要なのでしょうか? 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 koko_u_u ベストアンサー率18% (216/1139) 2010/02/13 20:49 回答No.1 何がわからないかをもっと具体的に補足にどうぞ 質問者 補足 2010/02/13 21:10 puts (1.0 / 300)**600 これを計算させると。0.0になってしまいます。 これを1000桁まで計算させたいです。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ [技術者向] コンピュータープログラミング・開発Ruby 関連するQ&A BigDecimal 頭が混乱してしまったのですが… ずばりBigDecimalを使用したとき、仮数部は最大何桁になるのでしょうか?BigDecimalの内部仕様まで今まで考えたことがなかったのですが… FLOATやDoubleのどはリファレンスにはっきり明記されているのですが… すみませんどなたか助けてください。お願い致します。 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; } です。 どこのコードが原因かもわからず、どこを質問文に掲示すればアドバイスいただきやすいかもわからなかったため、質問文に不足あるかもしれません。 すみませんがよろしくお願いします。 ruby の Σ計算 ruby で (i=o , 10 ) Σ i ** 2 を計算させるにはどうすればいいのでしょうか? ruby で 読み込んで計算させたいです。 0^2+1^2+3^2+....+2^10=?? ネットワークエンジニアとは?技術職の未来を考える OKWAVE コラム 計算する度にBigDecimalオブジェクト作成? javaのDouble型の足し算をするには、BigDecimalを使わなければ 正確な数値が得られない、ということで使用したのですが、 毎回、小数点の足し算をする度に、 負荷のかかるnew宣言でBigDecimalのインスタンスを作りaddメソッドで計算するというはどうも非効率に思ってしまうのです、、; javaでの小数点の足し算は皆さん通常どうやっているのでしょうか? rubyのエラー out of float range の原因 rubyでout of float range と算出されました。 これは計算の桁が大きすぎるためなのでしょうか。 ルビーは計算の桁がメモリーの許す限り無限と聞いたのですが。 どういう意味なのか教えていただきたいです。 整数0を値とするBigDecimal のオブジェクトを作るときに BigDecimal bd=new BigDecimal(0); のようにnewを使わない方法は有るでしょうか? ruby で C(コンビネーション) の 計算 rubyで10C2を計算させるにはどう書いたらいいのでしょうか? while を使うことはわかりました、、、 BigDecimalの計算方法に関して 現在Javaの勉強中です。 BigDecimalの計算を以下のように書いて 実行した場合正常に処理されます。 でも、もっとシンプルに書けると思うのですが リファレンスを見ててもさっぱりわかりません 何かご存知の方居ましたらご教授お願いします。 BigDecimal A = new BigDecimal(7); BigDecimal B = new BigDecimal(5); BigDecimal Total = new BigDecimal(0); Total = A.multiply(B); RUBY の 分数の 精度 分数の足し算をしたいのですが。 1.0/3 = 0.33333333333333 の15桁では、精度が足りません。 精度を1000桁にしたいのですがどうしたらいいのでしょうか? 1.0/3 = 0.3333333333333333.....1000桁。 BigDecimalの比較 例えばBigDecimal型の100.00 100.05 100.10 100.20を比較した時 100.10を基準で考えた場合+-0.05以内ならtrue(100.05の時) +-0.05を超えた場合はfalse(100.00、100.20の時) 効率よく処理するにはどうすればよいでしょうか? 大変お手数ですが宜しくお願い致します。 少数50桁以上を表示するには 小数点以下の第50位を計算結果として表示させたいのですが、うまくいきません。 今は BigDecimal BD = new BigDecimal("0.000・・・・"); double d; ----計算---- BD = new BigDecimal(d); ----表示---- として、表示させているのですが47桁くらいで終わってしまいます。 どうしたらいいのでしょうか。 情報が曖昧すぎますが、わかる方教えてください。 Perlの数値計算で有効桁数を上げたい 通常、Perlで数値計算をする場合、有効桁数は15~16桁になってしまいます。 これを、32桁、64桁と精度を上げて計算する方法はないでしょうか。 現在の環境は、Perl 5.8です。 よろしくお願いいたします。 AIは使う人の年齢や市場にも影響する?人工知能の可能性 OKWAVE コラム ruby で 1/300 の 7000 乗 ruby で 1/300.0 の 7000乗 を計算させる事は可能なのでしょうか? ( 1 / 300.0 )**7000 で計算させると 0.0 になってしまいます。 有効数字 特に、約分・計算順序について とある問題で、 9.8 × ( 24 × 60 × 60 )^2 ━━━━━━━━━━━━━ ←÷の分数表記です 4 × ( 3.14 )^2 × 6.4 × 10^5 という数の計算がありました。 どう計算するのがもっとも精度がいいのでしょうか? ※ 有効数字は 9.8 2桁 3.14 3桁 6.4 2桁 24 × 60 × 60 は正確な値としてよい。 4 は正確な値としてよい。 なお、値の精度は、誤差○.○~□.□があるから、ではなく、桁数のみで判定してください。(大学入試的な意味で) ちなみに、手元の答えでは≒2.9 × 10^2となっています。私は初め2.3 × 10^2になりました(←計算間違いではなく 泣 ) 計算途中の切り捨て、約分、計算の順序、四捨五入、等、できるだけ詳しく計算過程を記述してほしく思います。 Rubyでテキストから読みこんで計算するには Rubyプログラムを勉強中のものです。 openでテキストを読みこみ、そのテキストの中にある数字を使い、 defで計算するにはどのようなプログラムを作ればよいのでしょうか? 例えばnum.txtがあり、この中には 1.りんご 100円 2.みかん 80円 3.梨 120円 という内容が書き込まれているとします。 これを open("num.txt", "r") do |mise| で開く処理をし、 def fee (fru) fru * 0.5 end fruのなかにテキストに書かれている数字をいれて計算させるにはどのようにしたらよいでしょうか? Rubyのirbで計算を途中でやめることは可能? (OS: Mac OS X 10.9.1, Rubyのバージョン: 2.0.0 です) Ruby の irb を使用していて, 例えば >> while true >> puts "infinite loop" >> end などと打ち込んでしまって無限ループが起きたときや, その他非常に時間がかかりそうな計算を行っているときに, これを中断する手段というのはあるのでしょうか? (control + Z をすれば irb 自体を中断することはできるようですが, irb自体は中断せずに, 現在行っている処理のみを停止したいということです.) Javaでのある数の小数点乗について Javaでのある数の小数点乗について 数学での計算をJavaを使って計算している所です。Javaの中でもDoubleを使うのではなく、BIgDecimalクラスを使って計算をしています。しかし、BigDecimalの値をBigDecimal乗するという事は出来ないですよね? Math.powを使えばDouble型のDouble乗は出来ますが… そこで、任意の精度で小数点の小数点乗を求める方法は無いでしょうか? 必要ないかもしれませんが参考までに 言語:Java OS:MacOS 10.5 電卓アプリで%キーの計算プログラムについて 現在、Androidのアプリ作成の勉強に励んでいます。 まず、手始めに電卓アプリを作りながら学んでいますが、 電卓キーの「%キー」をClickした時の計算プログラムがどうしても考えつきません。 できれば、BigDecimalメソッドを使って「%キー」の計算をさせることができればと 思っています。 doCalcというメソッドを作ってその中に計算プログラムを書いていて doCalcメソッドの中身(足し算、引き算、乗算、除算についての計算プログラム)についての計算プログラム)は下記のとおりです。 是非、ご教授いただければ助かります。 またBigDecimalメソッドを使わず他のやりかたでも結構ですので、参考にご教授いただければ幸いです。 宜しくお願いいたします。 //strResult=入力中の数値 //strTemp=入力が完了した数値と計算結果で共有 private String doCalc() { BigDecimal bd1=new BigDecimal(strResult); BigDecimal bd2=new BigDecimal(strTemp); BigDecimal result=BigDecimal.ZERO; switch(operator) { case R.id.KeypadAdd: result=bd1.add(bd2); break; case R.id.KeypadSub: result=bd1.subtract(bd2); break; case R.id.KeypadMulti: result=bd1.multiply(bd2); break; case R.id.KeypadDiv: if(!bd2.equals(BigDecimal.ZERO)){ result=bd1.divide(bd2, 12, 3); }else{ Toast toast=Toast.makeText(this,R.string.toast_div_by_zero,1000); toast.show(); } break; } if(result.toString().indexOf(".")>=0){ return result.toString().replaceAll("\\.0+$|0+$",""); }else{ return result.toString(); } } Ruby での計算 お世話になります。 Ruby の初心者です。 以下のコードをノートパッドで作成して実行したいのですが、ロードしたのちに数値を代入するとエラーが表示されてしまいます。どこがいけないのでしょうか。 よろしくお願いいたします。 def triarea(w, h) s=(w*h)/2 return s end 不透明なルビーについて。 こんにちは! この間ルビーの可愛い指輪を見つけたのですが、宝石について全然知識がありませんので、教えてください。 私が一目ぼれした指輪は、昔縁日で売っていたおもちゃの指輪みたいな形の指輪で、ルビーの周りにダイヤモンドがついているというものでした。 このルビーなのですが、不透明で血のように濃い赤だったのですが、今までルビーといえば透明なイメージがあったので、その指輪が相場として高いのか安いのかわからず、買わずに帰ってきてしまいました。 ルビーの形は、ダイヤモンドみたいに(?)カットされておらず、半円状のコロンとした形で、お店の人がルビーでカボーション(?)なのは珍しい、と言っていました。 ルビーの大きさは、1cm前後くらいだったと思います。 大体相場っていくらくらいなのでしょうか? またルビーは透明なほうが良いのでしょうか? どうぞ教えてください。 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ [技術者向] コンピューター プログラミング・開発 Microsoft ASPC・C++・C#CGIJavaJavaScriptPerlPHPVisual BasicHTMLXMLCSSFlashAJAXRubySwiftPythonパフォーマンス・チューニングオープンソース開発SEOスマートフォンアプリ開発その他(プログラミング・開発) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など
補足
big1=BigDecimal("1",1000) big7=BigDecimal("7",1000) puts big1/big7 これを計算させましたが、NoMethodErrorとなり表示されませんでした。