私はこれを実行しようとしています。私もfmodを試みました。まだ働いたことはありません。私は与えられたdouble変数から正確な精度で小数部を抽出したいと思っています。6精度までしか得られません
void main(){
double a = 123.46566662;
double frac = a - (long)a;
printf("%f", frac);
}
//tried int64_t too
// output is :.465667
私はこれを実行しようとしています。私もfmodを試みました。まだ働いたことはありません。私は与えられたdouble変数から正確な精度で小数部を抽出したいと思っています。6精度までしか得られません
void main(){
double a = 123.46566662;
double frac = a - (long)a;
printf("%f", frac);
}
//tried int64_t too
// output is :.465667
所望の精度を得るために.10f
か.nf
精度を使用してください。ここにn
=精度の数。 @StoryTeller
void main()
{
double a=123.46566662;
double frac=a-(long)a;
printf("%.10f",frac);
}
//output :.4656666200
へ おかげで "正確な精度" のアイデアはあなたを取得するものです。小数部分(一般的に)は、有限の2進数で表現することはできません。まるで2/3の "正確な"小数部分がないように。
あなたが望むことができるのは、あなたのデータタイプに基づいて精度がさらに高い「近くに十分な」小数部を持つことです(float
対double
と考える)。
にはが必要です。「正確な精度」を得るには、十進数で10進数を格納する独自の「正確な」算術演算を実装することをお勧めします。文字列、BCD、または数字の配列です。
'printf'の精度を変えてみましたか? '%.10f'と同じですか? – StoryTeller
それが働いてくれてありがとう。何故それがなぜ10。 – sociopath