2017-02-16 2 views
0

私はこれを実行しようとしています。私もfmodを試みました。まだ働いたことはありません。私は与えられたdouble変数から正確な精度で小数部を抽出したいと思っています。6精度までしか得られません

void main(){ 
    double a = 123.46566662; 
    double frac = a - (long)a; 
    printf("%f", frac); 
} 
//tried int64_t too 
// output is :.465667 
+0

'printf'の精度を変えてみましたか? '%.10f'と同じですか? – StoryTeller

+0

それが働いてくれてありがとう。何故それがなぜ10。 – sociopath

答えて

0

所望の精度を得るために.10f.nf精度を使用してください。ここにn =精度の数。 @StoryTeller

void main() 
{  
double a=123.46566662; 
double frac=a-(long)a; 
printf("%.10f",frac); 
} 

//output :.4656666200 
0

へ おかげで "正確な精度" のアイデアはあなたを取得するものです。小数部分(一般的に)は、有限の2進数で表現することはできません。まるで2/3の "正確な"小数部分がないように。

あなたが望むことができるのは、あなたのデータタイプに基づいて精度がさらに高い「近くに十分な」小数部を持つことです(floatdoubleと考える)。

にはが必要です。「正確な精度」を得るには、十進数で10進数を格納する独自の「正確な」算術演算を実装することをお勧めします。文字列、BCD、または数字の配列です。

関連する問題