• ベストアンサー

float型とdouble型の変数の違いを教えてほしいです

nepon_67の回答

  • nepon_67
  • ベストアンサー率0% (0/2)
回答No.4

No2の補足ですが、整数値の計算であっても、16,777,215(だったかな)以上の数値を扱うのならdoubleにしないとダメです。 先頭1ビットは符号用なので、値がマイナスになります。

yamasitakatyou
質問者

お礼

回答ありがとうございます

関連するQ&A

  • float と double

    float と double は 表示できる桁数の違いですが、doubleの方が大きいので、常にdoubleを使えばいいと思うのですが。

  • C言語のfloat型変数の値代入と表示について

    float型変数の値代入と表示について質問があります。 #include <stdio.h> int main(void) {  float flVal = 50.456;  printf("float型変数:%f", flVal);  return 0; } 上記を実行すると、「float型変数:50.456001」と表示されました。 また、float flVal = 50.1; と変えて実行すると、「float型変数:50.099998」と表示されました。 それぞれ期待していた結果は、 「float型変数:50.456000」、「float型変数:50.100000」だったのですが 代入した値と結果が微妙に異なる理由は何でしょうか。よろしくお願いします。

  • c言語の変数の型について

    浮動小数点数の変数の型ってfloat、double、long doubleがありますよね?(その他もあったら教えてください) doubleはfloatの倍精度らしいですが、倍精度ってのは扱える数字の範囲が2倍なのか有効桁が2倍なのかわからないんで教えてほしいです。ちなみに、doubleとlong doubleの違いも判りません。 あと、これらの変数はprintfで出力するときは最高で8桁までしか出力できないんでしょうか?20桁とかは無理なんですかね?

  • 変数の受け渡し double

    関数の中にある変数の型を変えたら不具合が出たのでそのことに ついて質問します。 ある変数値が負である関数のdouble型変数に受け渡した後に値が変わりました。 本でdoubleの範囲を調べると1.7 * 10^(-308) ~ 1.7 * 10^(+308) と書いてありました。doubleに負の数値を代入してはまずいのでしょうか? 具体的なプログラムを下に載せます。 int mod(double x,int p) { int ans; printf("x=%f prime=%d ",x,p); if(x >= 0){ if(x >= p) { ans=fmod(x,p); printf("fmod=%d\n",ans); }else{ ans=x; printf("mod=%d\n",ans); } }else{ do{ x+=p; }while(x < 0); ans=x; printf("mod=%d\n",ans); } return ans; } int rmd(struct zahyo *P,struct zahyo *Q,int prime) { unsigned int m,n; m=mod(Q->x - P->x,prime); n=mod(Q->y - P->y,prime); exeuclid(m,prime,1,0,0,1); printf("m=%d n=%d aa=%d aa*n=%d\n",m,n,aa,aa*n); return mod(aa*n,prime); } 実行結果の一部 m=10 n=6 aa=-1 aa*n=-6 x=4294967290.00000 prime=11 fmod=9    関数modのdouble型変数に負の数を受け渡すのはここ以外にもありますが このときだけ他の数値になりました。 考えられる原因は何かあるでしょうか?よろしくお願いします。

  • floatの値について

    初心者的質問です。暇な方お答え願います。 分かりやすく教えてくださると嬉しいです。 例えば、簡単な main() { float a; printf("値を入力して下さい ==> "); scanf("%f",&a); printf("入力した値は%fです",a); } という感じで値を入力して出力するプログラムがあったとします。 このとき,例えば値を 166.5と入力すれば、166.500000とでますが 166.7と入力すると、166.699997とでるのはなぜでしょうか? doubleで変数宣言した場合は、このようにならないのですが。

  • ダブルクォーテーションで囲まないと表示できない変数

    ネットから拾ってきたサンプルソースをphp5.2.3を使って試行錯誤中です。 今回、メール受信のソースを試しており、 exitに変数を添えて変数の確認をしていたところ、 8行目は変数が表示できず、 9行目のようにダブルクォーテーションで囲むと表示できる といった変数がいくつかあることに気付きました。 10行目などの変数は、ダブルクォーテーションなしでも表示できますし、 print関数だと、ダブルクォーテーションのあるなしにかかわらず表示できています。 どのような変数でおこる現象なのか、知りたいと興味がわきました。 ご存知の方がいらっしゃいましたら、ご回答よろしくお願い致します。 ソース概略 (文頭の数字は行数,$host/$user/$passは事前に代入済) 01 $sock = fsockopen($host, 110, $err, $errno, 10) or die("サーバーに接続できません"); 02 $buf = fgets($sock, 512); 03 if(substr($buf, 0, 3) != '+OK') die($buf); 04 $buf = _sendcmd("USER $user"); 05 $buf = _sendcmd("PASS $pswd"); 06 $data = _sendcmd("STAT"); 07 sscanf($data, '+OK %d %d', $num, $size);   // 以下、必要なもの以外はコメントアウトして確認 08 exit($num);  //表示できない 09 exit("$num"); //表示できる 10 exit($host);  //表示できる 11 print($num);  //表示できる 12 print("$num"); //表示できる

    • ベストアンサー
    • PHP
  • 定数と変数の違い

    よく二次方程式 ax^2+bx+c=0 といった式で、解(xの値)を求めよ、と言う問題がありますね。この場合はa,b,cが定数、xが変数となりますが、それでは定数と変数の違いは何ですか?どちらも定まっていない数(例えば1や-2など)としては共通で、変数のほうがactive(活動中)な気がしますが、どうもはっきりとした説明が沸かないのです。 簡単な質問かもしれませんが、回答よろしくお願いします。

  • 変数について

    質問1:-0.0685274635この数値を扱うのは(計算したりIFで判断するには)どの変数を使えば良いですか? '変数 Variant Double=倍精度浮動 Currency=通貨型 Integer=整数型 Float=浮動小数点型 Long=長整数型 Dim CAL_DA As Integer Range("A1")="-0.0685274635" CAL_DA =Range("a1") 質問2:CAL_DAが-6.85274..になってしまいます。 ただし、必要とするのは-0.068の桁でよいのですが 質問3:CAL_DA =Mid(Range("a1"),1,6)いけますか? 以上ですよろしくお願いします。

  • 文字列をfloatで読み込む(atoi,sscanf)。しかし、値がおかしい。

    お世話になっています。 C言語の質問です。 文字列をfloatで読み込もうとしているのですが、出力結果がおかしくて困っています。 文字列をatofで変換した場合、doubleでは上手く表示できるのですが、floatでは少数が上手く表示できません。 また、sscanfでも試したのですが、上手く表示できませんでした。 どうしても、doubleを使わずにfloatであらわしたいと考えています。 どうかこのプログラムの問題点のご指摘お願いします。 実行結果 53.196600 53.196602 53.196602 ソース #include<stdio.h> #include<stdlib.h> #include<string.h> main() { char str[100]="53.1966"; double b; float c,d; b = atof(str); printf("%f\n",b); c = (float)atof(str); printf("%f\n",c); sscanf(str,"%f",&d); printf("%f\n",d); } 開発環境 windowsXP cygwin

  • C++の問題

    このプログラムを実行し、値234,453290453294をfloatとdoubleで定義した変数に代入して、画面に出力した時、どうなるか?実行結果にはどのような結果違いが発生し、なぜそうなるのかの理由を述べよ 文字変数aにbという文字、文字変数cにdという文字を代入して、変数aとcを使って、dbと出力するプログラムを作成せよ 誰かこれ助けてくれませんか