テンプレに沿って質問したいと思います。よろしくお願いします。
[1] 質問文
[1.1] 自分が今行いたい事は何か
以下のようなRのプログラムから出力された指数が混ざったtxtファイルの値を読み込めるようにしたいです。
-0.01296498 -0.01695993 -0.03888373 -0.01391935 -0.01312849
-0.02702044 0 0 -2.757055e-05 -0.000951184
[1.2] どのように取り組んだか(プログラムコードがある場合記載)
fscanf関数を用いて以下の形式で読み込んだところ問題が起きました。
fscanf(ファイル名,"%lf ",格納する配列(double));
[1.3] どのようなエラーやトラブルで困っているか(エラーメッセージが解る場合は記載)
指数部分の値がおかしいです。(上の例だと-2.757055e-05が-0.000028と異なった値で出力される)
[1.4] 今何がわからないのか、知りたいのか
上記のようなファイルを読み込むための手段があれば知りたいです。
[2] 環境
[2.1] OS : WindowsXP
[2.2] コンパイラ名 : VS2005
[3] その他
・どの程度C言語を理解しているか
学校の授業で習ったレベルです。
以上のようになります。よろしくお願いします。
指数を含むファイルの読み込み
Re: 指数を含むファイルの読み込み
%gを使います。
実験の都合上fscanfになっていますが、scanfでもいいと思います。
http://9cguide.appspot.com/r_mark.html
#include <stdio.h>
int main(void) {
FILE* fp;
double in;
fp=fopen("input.txt","r");
if(fp==NULL)return 1;
while(fscanf(fp,"%lg",&in)!=-1)printf("%g\n",in);
fclose(fp);
return 0;
}
http://9cguide.appspot.com/r_mark.html
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 指数を含むファイルの読み込み
みけCATさん
無事ファイルの値を読み込むことができました。
もしよろしければもう一つお尋ねしたいのですが
先ほどのプログラムで以下のようにデータの和を求める場合はどうすればいいのでしょうか?
以下のプログラムでは指数部分の値が-0.000028として扱われてしまい、正しい値が出力されませんでした。
手元の関数電卓で計算した値は
-0.1423583082
となります。(計算ミスがなければですが(汗))
お時間がありましたら返信いただけるとありがたいです。
ご回答ありがとうございました。
無事ファイルの値を読み込むことができました。
もしよろしければもう一つお尋ねしたいのですが
先ほどのプログラムで以下のようにデータの和を求める場合はどうすればいいのでしょうか?
以下のプログラムでは指数部分の値が-0.000028として扱われてしまい、正しい値が出力されませんでした。
手元の関数電卓で計算した値は
-0.1423583082
となります。(計算ミスがなければですが(汗))
お時間がありましたら返信いただけるとありがたいです。
ご回答ありがとうございました。
Re: 指数を含むファイルの読み込み
わたくしの手計算では -0.12385567455 でプログラムでは と表示されましたよ。特にプログラムが間違っているようには思えません。median さんが書きました:以下のプログラムでは指数部分の値が-0.000028として扱われてしまい、正しい値が出力されませんでした。
手元の関数電卓で計算した値は
-0.1423583082
となります。(計算ミスがなければですが(汗))
Re: 指数を含むファイルの読み込み
maruさん
返信ありがとうございます。
以下のサイトでコピーペーストした値で計算を行ったところ(自動で四捨五入されますが)-0.12…にはならなかったので確認をしたいのですが
2.75706e-005の指数部分e-005というのはeの-5乗という意味であってますか?
そのあたりの知識があいまいなので教えていただけるとありがたいです。
http://tomari.org/main/java/dentaku_kansuu.html
計算式と結果
-0.012965-0.0169599-0.0388837-0.0139194-0.0131285-0.0270204-0.000951184-2.75706*exp(-5)=-0.14240500815329857
返信ありがとうございます。
以下のサイトでコピーペーストした値で計算を行ったところ(自動で四捨五入されますが)-0.12…にはならなかったので確認をしたいのですが
2.75706e-005の指数部分e-005というのはeの-5乗という意味であってますか?
そのあたりの知識があいまいなので教えていただけるとありがたいです。
http://tomari.org/main/java/dentaku_kansuu.html
計算式と結果
-0.012965-0.0169599-0.0388837-0.0139194-0.0131285-0.0270204-0.000951184-2.75706*exp(-5)=-0.14240500815329857
Re: 指数を含むファイルの読み込み
exp(-5)はe(≒2.71828)の-5乗だと思います。
すなおに/100000としてみたらどうですか?
すなおに/100000としてみたらどうですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 指数を含むファイルの読み込み
みけCATさん
eはexpではなかったのですね。勘違いしてました。
おかげさまで、無事プログラムを作ることができました。
いろいろ教えていただきありがとうございました。
eはexpではなかったのですね。勘違いしてました。
おかげさまで、無事プログラムを作ることができました。
いろいろ教えていただきありがとうございました。