Rubyで整数どうしの割り算 切捨てしたくない

このQ&Aのポイント
  • Rubyで整数同士の割り算をすると、割り切れないときに小数は切り捨てされます。
  • 切り捨てたくない場合は、割り算の前に数値を浮動小数点に変換する必要があります。
  • 具体的には、割り算する数値をto_fメソッドで浮動小数点に変換することで、切り捨てずに小数点以下まで計算できます。
回答を見る
  • ベストアンサー

rubyで整数どうしの割り算 切捨てしたくない

rubyで整数同士の割り算をすると、割り切れないときに小数はきりすてされるようですが、切捨てしたくないときはどうしたらよいのでしょうか 例 a = 1 b = 100 printf("%5.5f / %5.5f = %5.5f\n",a,b,a/ b) 結果 1.00000 / 100.00000 = 0.00000 となってしまいます 1.00000 / 100.00000 = 0.01000 となってほしいです 割り算のまえにto_fする方法を試しましたが結果は同じでした a = 1 b = 100 a.to_f b.to_f printf("%5.5f / %5.5f = %5.5f\n",a,b,a/ b) よろしくお願いします!

  • Ruby
  • 回答数1
  • ありがとう数4

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

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

printf( "%5.5f / %5.5f = %5.5f\n",a,b, a.to_f / b)

fumigooo
質問者

お礼

ありがとうございます! 解決しました。

関連するQ&A

  • 整数となる分数

    a、bを正の整数とする 任意の正の整数nに対して(n^3+an-2)/(n^2+bn+2)の値が整数となるようaとbの値を定めよ 分母は分子×分子で割り算した商+余りなのでそれで書きかえてn-b+{(a+b^2-2)n+2(b-1)}/n^2+bn+2 nもbも正の整数だから無視して{(a+b^2-2)n+2(b-1)}/n^2+bn+2が整数となればよい というところまでは分かりましたが、ここからどうすればよいかわかりません 教えてください

  • 簡単な割り算プログラムとprintfについて。

    趣味のプログラミングで二つの整数x, yの割り算結果x/yを分数(約分も行う)、または少数で表示するプログラムを作成中です。 分子が1になる場合は分数、それ以外は少数で表示しなくてはなりません。 しかし、 二つの整数が1, 111の場合など、割り算の結果が無限少数になってしまう場合は、 1/111と表示しなくてはいけません。 例) x = 100, y = 200, kekka = 1/2 x = 4, y = 5, kekka = 0.8 x = 1, y = 111, kekka = 1/111 わたしは初めに、x ,yを比較してxのほうが大きい、または最大公約数がxと等しい場合はx/yを少数で表示し、 それ以外なら最大公約数で両方を割って分数で表示、という風に考えていましたが、 条件の無限小数の判定の方法がどうしても分かりません。 また、もし結果が0.0003などの場合、printf("%.4f", kekka); と書けば、0.0003とキレイに表示されますが、 printf("%f", kekka);のままでは、0.000300とゼロが余計に表示されてしまいます。 この桁数指定を引数などで与える方法が分かりません。 もしお詳しいかたいらっしゃいましたら、ご教授ください。 よろしいお願いします。

  • 上手くいきません(T_T)

    『やさしいC』という本でC言語を勉強しているのですが。ほんの通りに行かなくてつまづいてしまいました。 --------------------------------------- #include <stdio.h> int main(void) { printf("%cは文字です。\n",'A'); printf("%dは整数です。\n",'123'); printf("%fは小数です。\n",'10.5'); return 0; } ------------------------------------- と書いて結果が ------------------------------------ C;\WORK>Sample4 Aは文字です。 3355185は整数です。 0.00000は小数です。 ----------------------------------- と出てくるのですが、本では。 ---------------------------- C;\WORK>Sample4 Aは文字です。 123は整数です。 10.500000は小数です。 -------------------------- と表示されるはずだったのですが。 どこご悪いのでしょうか? お願い致します。

  • わり算の結果が整数でも小数点以下4桁まで表示されてしまう!

    わり算の結果が整数でも小数点以下4桁まで表示されてしまう! 同じような質問で恐縮なのですが、 例えば、100、101というデータをMySQLの算術演算子/を使って2で割ると、 50.0000、50.5000のように、整数だろうが小数だろうが、小数点以下4桁まで出てしまいます。 これを、いろんな関数を駆使して50、50.5にすることはできますか。 50、51または50.0、50.5のように小数点の位置を同じずつ動かすことはできるのですが、これでは嫌だなぁと思った次第です

    • ベストアンサー
    • MySQL
  • エクセル 小数点切捨てで整数表示にしたい 関数の使い方

    「小数点の切捨て」を実行し、整数で表示されるように関数を使いたいのですが、よくわかりません。 A1に「32*0.3」という数式を使って「9.6」という数字が表示されています。 この「9.6」を切り捨てて「9」と表示したいのですが、どの関数を使用し、どのように数値などを入力すればいいのかわかりません。 教えてください。

  • scanf関数のプログラムをgetchar関数で

    scanf関数を使って四則演算、論理輪、論理積をint、float、double型で表示するプログラムを作ったのですが これをscanf関数ではなく、getchar関数で組みなおし、関数化する課題が出ました。 そのままscanf関数のところだけを変えても型が違うというエラーが出てうまくいきません。 どうすればいいでしょうか? 一応scanf関数で組んだプログラムの一部を載せておきます。 #include <stdio.h> #include <math.h> main() { float a , b; float x[5]; printf("正の数字を2つ入力して下さい(小数点を含めて4ケタまで):\n"); for(;;) { printf("\na="); scanf("%f" , &a); if(a>=0 && a<=9999 && a) { break; } else { printf("****aに入力エラー****\n"); printf("数字は4ケタ以内の正数を入力:\n"); continue; } } for(;;) { printf("b="); scanf("%f" , &b); if(b>=0 && b<=9999 && b) { break; } else { printf("****bに入力エラー****\n"); printf("数字は4ケタ以内の正数を入力:\n"); continue; } } x[0] = a+b; x[1] = a-b; x[2] = a*b; x[3] = a/b; x[4] = a||b; x[5] = a&&b; printf("\n"); printf("int型 結果:\n足し算=%d\n" , (int)x[0]); printf("引き算=%d\n" , (int)x[1]); printf("掛け算=%d\n" , (int)x[2]); printf("割り算=%d\n" , (int)x[3]); printf("論理和=%d\n" , (int)x[4]); printf("論理積=%d\n" , (int)x[5]); printf("\n"); printf("float型 結果:\n足し算=%f\n" , x[0]); printf("引き算=%f\n" , x[1]); printf("掛け算=%f\n" , x[2]); printf("割り算=%f\n" , x[3]); printf("論理和=%f\n" , x[4]); printf("論理積=%f\n" , x[5]); ・ ・ ・ getchar(); }

  • MATLABで小数を整数にするには?

    タイトル通りなんですがMATLABで小数の値を小数点以下切捨てなどで整数にする方法はありますか?

  • 整式の割り算

    問題は次の(A)(B)を同時にみたす5次式f(x)を求めよ。図のような記述(赤○からの記述の後) (A)f(x)+8は(x+1)^3で割り切れる(B)f(x)-8は(x-1)^3で割り切れる 「f‘(x)は(x+1)^2で割り切れ、(x-1)^2でも割り切れる4次式である。」とあります。 整式の割り算で疑問に思ったのですが、なぜ(x-1)^2、(x+1)^2で割り切れるのでしょうか? (x-1)^3、(x+1)^3では割り切れないとはなぜいえないのでしょうか? 整式の割り算で A(x)=p(x)(割る式)q(x)(商)+r(x)と除法を考えるとき、r(x)の次数についてp(x)よりは低いということはわかるのですが。 整数の割り算ではA=P(割る数)Q(商)+R(あまり) Rについて0≦R<Pです。また、A,P,Q,Rはすべて整数になるよう考える。

  • 数式によって導き出した数値の切捨

    エクセルでセルに数式を入れて導き出した値を自動的に小数点以下切捨てにする方法がわかりません。 (例・セルの計算式) =A2(他のセル。ここでは3200とします)/1.2(値は2666.6666になります) セルに返される値は小数点以下を切上げて「2667」。 これを切捨して2666にしたい。 どなたか方法を教えてください。 たいへんわかりづらい説明だと思いますが宜しくお願いいたします。

  • C言語のswitch文について間違っているところを教えてください

    初めに初心者ですので間違っているところは説明つきの回答をしていただければありがたいです。 今回switch文を使って 「足し算、引き算、掛け算、割り算」のプログラムを作ったつもりなのですが、intを使うと割り算の小数点が出ないしfioat文を使うとswitch文には、使えないと出るしどのようにしたら良いのか御回答よろしくお願いします。 (今は、int文でプログラムを作っているつもりです。) #include <stdio.h> void main (void) { int a,b,k; printf("どのような計算をしたいか数字を選んでください。\n"); printf(" 1.足し算 (例 a+b)\n"); printf(" 2.引き算 (例 aーb)\n"); printf(" 3.掛け算 (例 a×b)\n"); printf(" 4.割り算 (例 a÷b)\n"); printf("計算したい番号を入力してください "); scanf("%d",&k); switch (k){ case 1: printf("aを入力してください "); scanf("%d",&a); printf("bを入力してください "); scanf("%d",&b); printf("\n答えは a+b で %d です\n",a+b); break; case 2: printf("aを入力してください "); scanf("%d",&a); printf("bを入力してください "); scanf("%d",&b); printf("\n答えは aーb で %d です\n",a-b); break; case 3: printf("aを入力してください "); scanf("%d",&a); printf("bを入力してください "); scanf("%d",&b); printf("\n答えは a×b で %d です\n",a*b); break; case 4: printf("aを入力してください "); scanf("%d",&a); printf("bを入力してください "); scanf("%d",&b); printf("\n答えは a÷b で %d です\n",a/b); break; default: printf("明記してあるどれかの数字を再入力してください"); } }

専門家に質問してみよう