龙空技术网

C语言-精度问题

肌肉诗男 486

前言:

现时你们对“保留两位小数c”可能比较重视,各位老铁们都想要剖析一些“保留两位小数c”的相关文章。那么小编也在网上汇集了一些关于“保留两位小数c””的相关内容,希望咱们能喜欢,各位老铁们一起来了解一下吧!

①引子

以四舍五入,保留两位小数为例,

输入数据:123.456

理想结果:123.46

但是

选取不同的数据类型

会得到不同的小数精度

只能是约等于123.46

C语言中

浮点数无法精确存放,

double类型的精度高于 float类型。

②float类型的精度

float fun (float h)

{long t;

t=(h*1000+5)/10;

return(float)t/100;}

输入数据:123.456

原始数据:123.456001

实际结果:123.459999

~

float fun (float h)

{int t=(int)(h*1000+5)/10;

return(float)t/100;}

输入数据:123.456

原始数据:123.456001

实际结果:123.459999

float fun (float h)

{return(float)(int)(h*1000+5)/10/100;

}

输入数据:123.456

原始数据:123.456001

实际结果:123.460999

③double类型的精度

double fun (double h)

{long t;

t=(h*1000+5)/10;

return(double)t/100;}

输入数据:123.456

原始数据:123.456001

实际结果:123.460000

~

double fun (double h)

{int t=(int)(h*1000+5)/10;

return(double)t/100;}

输入数据:123.456

原始数据:123.456001

实际结果:123.460000

~

double fun (double h)

{return(double)(int)(h*1000+5)/10/100;

}

输入数据:123.456

原始数据:123.456001

实际结果:123.461000

标签: #保留两位小数c