sqrt函数返回值是double。表达式包含隐性转换,规则就是尽量保证数据精度不丢失。
对编程人员来说,double 和 float 的区别是double精度高,有效数字16位,float精度7位。但double消耗内存是float的两倍,double的运算速度比float慢得多,C语言中数学函数名称double 和 float不同,不要写错,能用单精度时不要用双精度(以省内存,加快运算速度)
系统默认小数是double,所以你调用sqrt时,其实是这个用法double sqrt(double),返还的是double类型,double类型和其他类型运算的时候,系统会自动把数都变成double类型进行运算,返还的也是double。double是双精度浮点数,一般占8个字节,float是单精度浮点数,一般占4个字节,int也是4个字节。一般运算的时候,精度低的会向精度高的转化,double>float>int
float占4个字节,也就是32位,存储方式是1位符号位(1表示负数,0表示正数)+8位阶码(移码表示,也就是2的几次幂)+23位有效位(原码表示)
double占8个字节,也就是64位,存储方式是1位符号位+11位阶码+52位有效位。