• ベストアンサー

linux RedHatでC言語

整数、単精度(float)、倍精度(double)の変数変換、各種書式付出力について教えてください。 また、よろしければ、40桁の整数、有効数字20桁の実数、小数点以下15桁の実数を表示する方法について教えてください。 本当にC言語の初歩だとは思いますが教えてください。

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

  • ベストアンサー
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.1

変換というと int型←→doubleはキャストすることで簡単に変換できます。 int i; double d; d = (double)i; int→double 出力って、普通にprintfやcoutを使います。 printf("%lf",d); 40桁の整数20桁の実数は直接は扱えません。longは4バイト、doubleは8バイトです。 linuxだと確かlong double(10バイト)がつかえますが 、有効数字20桁には届きませんね。 まずはシフト演算やビット演算、浮動小数点について知り 構造体を使う関数、またはクラスを自作するしかありません 世には既にそういうライブラリーがあるらしいので それをダウンロードして使う手もあります。 その辺りはC言語の初歩というか どちらかというと情報処理、数学の話かと思います。

関連するQ&A

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

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

  • C言語のプログラム作成の課題の事なんですが

    小数とアルファベットを入力したとき、例えば “123.45a” と入力したとき、 プログラムの中で整数型の変数で “123.45” を一つの数字(double型)として認識し、その 数字を出力せよ。 というプログラムを組む課題なんですがさっぱり?わかりません。どなたか教えて戴けないでしょうか?

  • C言語での変数の書式設定

    こんばんは。 このたびC言語を学びはじめたのですが、変数の書式設定の部分で分からない部分があったので、質問させていただきました。 分からない部分というのは%ld,%hd,(%lf)(%hf)です。(()内に書いたのは存在するか分かりませんが・・・。) これらはshortやlongで整数(実数)を表現する書式だと書いてあったのですが、具体的に何がどう違うのかがよくわかりません。 ためしにlong型で宣言した変数を%hdで表示してみたらshort型で表現できる数のみしか正常に表示されませんでした。しかし、short型で宣言した変数を%ldで表示してみても何も変化が見られません。また、実数に関してはよくわからない値が返ってきてしまいました。 変数で宣言した型と実際に使う書式が合致するか否かでは一体何がどう変化するのでしょうか? 初歩的なことかもしれませんが、以上の疑問の答えを知っていらっしゃる方がいましたら、どうかご教授ください。お願いいたします。

  • C言語の質問です。

    1.(a*b)/(a+b)の計算をさせたいのです。ふつうに変数は代入される方法でいいです。 #include <stdio.h> main() { double a,b S=(a*b)/(a+b) printf ("%f\n",S) } 上記のプログラムでできますか?間違いならば修正・訂正をお願いします。 2.整数の変数aに2.147.483.647をいれ、1を加えるとどうなるか? 実数の変数dに、 d=1/2とするとどうなるか? d=1.0/2とするとどうなるか? 実数の変数d1,d2,d3に対して、 d3=d1-d2を計算するとどうなるか? 出力は、「%22.16g-%22.16g=%22.16g」の書式で、d1,d2,d3を出力しましょう。 d1 | d2 0.1 | 0.01 1.0 | 1.0000000000000 (0は14個) 1.0 | 0.00000000000000001 (0は16個) 上記のようなプログラムでOKです。教えて下さい。

  • C言語イプシロン値

    現在使用中の開発環境(C言語使用)標準ヘッダfloat.hに単精度浮動小数点数イプシロン値が下記のように定義されています。 #define  FLT_EPSILON   0x8p-26F 「0x8p-26F」なる表現を初めて見たのですが、これはどういう意味で、具体的にどんな数字になるのでしょう? ご存じの方、教えてくださいませ。 よろしくお願いします。

  • 変数について

    質問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)いけますか? 以上ですよろしくお願いします。

  • (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言語を始めたばかりです。 誰か教えてください。 私の勉強している、明解C言語入門の演習2-6で、  以下に示すように、身長を整数値として読み込んで、標準体重を実数で表示するプログラムを作成せよ。標準体重は(身長-100)×0.9によって求め、その小数点以下は、1桁だけ表示すること。    身長を入力してください。  標準体重は67.5です。 がわかりません。  念のため、私の作ったものを参考にして答えを教えていただけないでしょうか? #include <stdio.h> int main(void) { int na; puts("身長を入力してください。"); printf("身長:"); scanf("%d",&na); printf("標準体重は[%.1f]です。%n", (double)(na - 100) * 0.9); return(0); }

  • 型指定子についての教えてください。

    コンパイラはMicrosoft visual C&C++を使用しています。 (1)型指定子のfloat,doubleの大きい数値について。 計算をするとfloatは7桁までは正しくて、7桁より大きい桁はデタラメです。doubleは15桁までは正しくて、15桁より大きい桁はデタラメです。有効数字7桁,15桁とはこういうことでしょうか。 後、floatは有効数字7桁、doubleは有効数字15桁で本当に正しいのでしょうか。 (2)型指定子のfloat,doubleの小数点以下の数字について。 floatは10^-38まで、doubleは10^-308までの数字を扱えると参考書には書いてありますが、計算をしますと小数点以下6桁までは求まりますが、それ以下は求まりまりません。それ以下の数値はすべて0になります。なぜでしょうか。 (3)int,long intとdouble long doubleの違いについて。 intとlong intはともに-2147483648~2147483647までの範囲だと思います。またdoubleとlong doubleはともに有効数字15桁でした。何か違いがあるのでしょうか?

  • c言語プログラミングについて

    回答お願いします!! 3つの整数値をキーボードから入力し、その平均値を求めるものを出力しなさい。 ただし、3つの整数値から平均値を戻り値として返す。 関数double average(intx,inty,intz)を作成し、これを使って平均値の値を出力すること 平均値は小数第二位まで出力せよ 上記の問題がどうしても分かりません!

専門家に質問してみよう