我试图运行这个。我也试过fmod。没有任何工作。我想从一个给定的双变量中提取精确的精度小数部分。我只能达到6精度
void main(){
double a = 123.46566662;
double frac = a - (long)a;
printf("%f", frac);
}
//tried int64_t too
// output is :.465667
我试图运行这个。我也试过fmod。没有任何工作。我想从一个给定的双变量中提取精确的精度小数部分。我只能达到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/3的“精确”小数分数一样。
您可以期望的最好的方法是根据您的数据类型以更高的精度获得“足够接近”的小数部分(请考虑float
与double
)。
如果确实必须得到得到“精确的精确度”,我推荐你实现你自己的“精确”算术,其中你用十进制表示存储十进制数。无论是字符串,BCD还是一组数字。
您是否尝试更改'printf'的精度?像'%.10f'? – StoryTeller
感谢它的工作。任何想法为什么它不工作没有.10? – sociopath