• 締切済み

C++での質問

はじめまして。現在C++でプログラミングの勉強をしています。そこで逆数の和を求める問題があるのですが、1÷3や1÷7といった計算を1/3,1/7というように入力したのですが、なぜか"0.00000"と表示されてしまいます。ためしに6÷4といった計算を"4/6"と入力しても、"1.000000"と小数点以下の値が表示されないんです。変数の宣言はdouble型でやったのですが・・・なぜでしょうか?もし分かる方いましたら、教えてください!!

みんなの回答

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.2

どこが間違っているかを知りたい場合は、あなたが書いたコードを質問欄に書かないと みんな「想像で」回答するしかなくなってしまいます。

takasuek
質問者

お礼

ご指摘ありがとうございます。 今回の問題はとりあえず解決いたしました!!次からはコードやプログラム本文を質問に掲載するようにします。 今後また質問することがあると思いますがそのときはよろしくお願いします!!

回答No.1

(double)1/(double)3 とか 1.0/3.0 だ。 1/3をdoubleの変数に格納した場合 (double)((int)1/(int)3)となる。 int同士に/演算子を使うとその商になるから (double) 0となる

関連するQ&A

  • C言語について質問です。

    C言語について質問です。    問題:繰り返し命令と階乗の計算 カウンタ用変数nの値を1から10まで1ずつ変化させて、その値を階乗用変数Kiに順次、掛け算していき、10の階乗を求めよ。 ki=1×2×3×4×5×6・・・・・×9×10 <==10! また、1/n!は小数点以下10桁まで求めよ。 実行結果は    n                 n!             1/n!    1                 1             1、0000000000    2                 2             0、5000000000    3                 6             0、1666666667    4                24             0、0416666667    5               120             0、0083333333    6               720             0、0013888889    7              5040             0、0001984127    8             40320             0、0000248016    9            362880             0、0000027557   10           3628800             0、0000002756                            続行するには何かキーを押してください、、、、、、 上のように実行結果が出るようにプログラミングしたいのですがわからないので 分かる方よろしくお願いします。 ちなみに今まで習ってきたのは、if文、switch文、do文、while文、for文なんですがこのプログラミングは、for文でおねがいします。 長文失礼しました。

  • 小数点の計算について

    テキスト入力箇所が2箇所と計算ボタンがあって、 計算ボタンを押すと入力された値の和が表示されるというものです。 小数点第2位まで表示したいのですが、例えば10.00と10.00を入力して 計算ボタンを押すと、20 としか表示されません。 20.00と表示させたいのですが、どうしたらいいでしょうか? よろしくお願いします。

  • プログラミングCについて

    次のプログラムは11の正の平方根の近似値を、以下の方法に基づいて小数点以下第4位の精度で求めるプログラムである。このプログラムが正しく動作するように下線部を埋め、プログラムを完成させなさい。なお、3の2乗は9であり、4の2乗は16なので、10の平方根は3と4の間であることはわかっているとしてよい。(小数点以下第4位の精度とは、小数点以下第4位までが真値ち一致するようにし、第5位以下については一致しなくてもよい事を意味する。よって、結果の表示自身に第5位以下が表示されても構わない。) double x; for(x=3;x<4;x+=0.0001) { for(_______) break; } printf("11の正の平方根は%______です。\n",x); 平方根を求める方法: 変数を3から4まで0.0001刻みで増やしながら、その2乗を計算していきます。最初は3なので、その2乗は9となり、11よりも小さい値になりますが、変数の増加に応じて2乗の値も増えていき、4の2乗になる前には11を越えます。この時の変数が11の平方根の近似値になります。 注意: このプログラムによる答えは3.3167となります。実際には、変数の2乗が初めて11を越えたときの変数の値よりも、その1ステップ前の変数の値が方が近似値として適切かもしれません。しかし、今回はそこまで考慮する必要はありません。

  • (C,C++言語)関数の引数は自動キャストされる?

    プログラミング言語C,C++の数値計算に関する質問です. 整数データ変数同士のみの計算結果は小数点以下は切り捨てられますよね. もし実数型で計結果を得たいときは,int変数を(double)や(float)でキャストしてあげなければならないことは知っています. ここで,仮引数リストにdouble型変数が設定されている関数の引数にint型変数を与えた時,関数の呼び出し時にキャストしなくても自動でキャストされるのでしょうか. 以下のサンプルコードを作成し,実行してみた結果を次に示します. ---サンプル--- #include <iostream> using namespace std; void printDouble(double val, double val2) { cout << "(double)val = " << val / val2 << endl; } int main(void) { for (int i = 1; i < 5; i++) { cout << i / (i * 2) << endl; printDouble(i,i*2); } } -----実行結果---- 0 (double)val = 0.5 0 (double)val = 0.5 0 (double)val = 0.5 0 (double)val = 0.5 ------------------------- 関数の外での計算は整数に丸められてしまうので i / ( i * 2 ) 計算結果はゼロに,関数の中では与えられた i はdouble型として扱われるので小数点以下の値も残っているということですよね. この場合,printDouble関数へ整数を与えるときには printDouble( (double)i , (double)( i * 2 ) ); といったようにわざわざキャストしなくても自動で仮引数の型でキャストされて関数が呼び出されると理解してもよいのでしょうか. 実行結果から明らかだろ,思われてしまうかもしれませんが,何かの参考書に記述されているのを見たり,人からそう教わったわけではなく,また関数のオーバーロードのこともありますので,質問させて頂きました.よろしくお願いいたします.

  • C言語で。。。。。

    C言語のプログラミングの勉強をしているのですが、 5.4のような小数点以下ありの数値の整数値を表示させる関数ってありますか??ネットを探してみてもよく分からなくて困っています(><)よろしくお願いします。

  • 小数点第2位の数値の計算

    下記のような処理があるとします。 Dim 変数1 As 宣言 Dim 変数2 As 宣言 Dim 変数3 As 宣言 Dim 変数4 As 宣言 変数1 = 0 変数2 = 0 変数3 = 0 変数4 = 0 変数1 = テキストボックス1.Text 変数2 = ラベル2.Caption 変数3 = ラベル3.Caption 変数4 = (変数2 + 変数3) - 変数1 ラベル4.Caption = 変数4 変数1~3には、小数点第2位までの 数値が入る事があるのですが、 例) 変数1 = 3.0 変数2 = 4.75 変数3 = 7.75 の場合、変数4 = 0 と計算される。 その場合、変数4の計算結果が 正しく出力されません。 宣言はDoubleを使うと計算結果は 16進数表示になり、Singleを使うと0になります。 正しい計算結果を出すには どのようにすれば良いでしょうか?

  • 凄い初歩的な質問かと思うんですが・・・

    電卓を作っているんですが、 小数点計算を可能にする為double型で計算しているんですが、 例えば、555555555.0 + 5.0となると、答えが5.5555556E8となります。 なぜですか? まだdouble型の値の範囲超えてないですよね? 解決方法と合わせて教えてください。 お願いします。

  • C++について

    倍率を求めたいのですが,メルセンヌツイスターを使って入力した変数にたいして1.5~3.0倍の値を表示したいのですがうまくいきません。入力した変数の値が仮に200だとして、倍率の1.6が出た場合160になるのですが私のは違う数値がでてきます。倍率の計算を知りたいです。ご助力お願いします

  • C/C++での最小二乗法について

    いつもお世話になっております。 初めての質問で不備があるかと思われますがよろしくお願いします。 現在Excelのソルバー機能で、測定した値とは別に 計算式f(x)で求めた推定値との残差二乗和((測定値-推定値)^2の和)から 計算式f(x)の変数a,bを算出しています。(変数a,bの初期値は適当な値を設定) このソルバーでの最小二乗法の計算をc/c++にて実装するにはどのようにすれば良いのでしょうか。 (ソルバー機能では目的値を残差二乗和、変化対象を変数a,bとし、準ニュートン法より最小値を求めています。) 御教授よろしくお願いします。

  • C言語で四則演算を使って結果が10になる数式

    C言語のプログラミングについて質問です。 四つの一桁の数字を入力して四則演算を使って結果が10になる数式を作りたいのですが、イメージが湧きません。 教えていただけますか? 例:1234enterkey 答え2*3+1*4 数値の変数はint型でお願いします。int型ですので小数点以下を使って10になる結果は出さなくて宜しいです。お願いします。

専門家に質問してみよう