を失うことなく、私は、データセット(CSV形式として記憶(12008 * 12008)マトリックス)を有するような浮動小数点数値を含む:私はそれを読んだとき、私は気づい精度
0.00000000000000000129097521168892,0.00000822381709160264,-0.0000202130952444797,-0.0000242966927641499,0.000030546233920949,0.0000371753288365733,-0.00000425477255333099,0.0000417806937053693,-0.0000108963812606789,-0.0000116825931954974,0.00000630880107874073,-0.0000148294201214316,0.000015379692507603,0.00000188679818192867,0.00000244261959932239,-0.00000000000000000151132910441927,-0.0000219241408193178,0.000017429377110585,0.00000870784208574737,0.0000364006097348257,0.0000113488247245831,0.000000061277075989572,0.00000139732542828701,0.000000106947553933263,0.0000326417023213338,0.000000461629854407632,0.0000154355086839126,-0.00000952557006126632,-0.00000661974638741755,0.0000100492673229086,-0.00000234761929597247,0.000000562031028984242,-0.0000111189586356939,0.0000147613296909272,-0.0000412808264307332,0.0000144980218289582,-0.00000396573532860471,0.00000284216015813941,-0.000000340292198448977,0.000000000000000000673559708847384,-0.000000000000000000477244282125147,0.0000295672329145256,0.000000265057585538249,-0.0000259880981140332,-0.000000655572300400449,0.0000275203484322834,0.00000939709816031401,-0.000000722013848489603,-0.000000131975990695569,-0.0000305715257167805,0.0000166359409438876,-0.0000108549024616569,0.0000035413589251256,0.0000134733827428785,0.00000033136969072632,-0.0000000227,0.0000251344669810146,0.00000507204772254958,-0.00000000193093573409854,
を
0.0000000
-0.000082
私は私のプログラム内のバッファに精度を失うことなく、データセットから正確な値を読みたい:floatバッファーは、私は私のような何かを得るあまり精度を失います。私は読むために、次の小さなプログラムを使用しますが、私はそれが精度を失わないように、それを変更するかどうかはわからない:
float *data = malloc((12008 * 12008) * sizeof(float));
FILE *fp ;
fp=fopen("./eig_matrix.csv","rb");
if(fp!= NULL) fread(data, (12008 * 12008)*sizeof(float),1,fp);
fclose(fp);
これまで、あなたは妥当なものは何も読んでいません。あなたのCSVの文字は 'float'に変換されていますか? CSVを読むには、バイナリの読み取り以上のことが必要です。そして、 'malloc'や' fread'のようなプログラムの実行に関連するエラーを報告できる関数のrsultを常にチェックしてください。 – Olaf
あなたのcsvファイルが本当にテキストファイルであるように聞こえます。 'fread'の呼び出しはテキストを浮動小数点に変換しません。 – bruceg
基数10の数字列を 'float'に変換するコードはどこにありますか?あなたはそれが魔法によって起こることを期待していますか? –