1.powfԴ?源码?
2.c语言里conversion from 'double ' to 'float ', possible loss of data是什么意思?
powfԴ??
源代码如下:#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include <iostream>
using namespace std;
float Average(float data[], int n);
float Bias(float data[], int n);
int main()
{ int n;
float data[] = { 0};
cout<<"Pls input how many numbers:"<<endl;
cin>>n;
cout<<"Pls input all the numbers:"<<endl;
for (int i = 0; i < n; i++)
cin>>data[i];
cout<<"The s is "<< Bias(data, n)<< endl;
system("pause");
return 0;
}
float Average(float data[], int n)
{ float sum = 0.0;
for(int i = 0; i < n; i++)
{
sum += data[i];
}
return sum / n;
}
float Bias(float data[], int n)
{ float temp = 0.0f;
float average = Average(data, n);
for (int i = 0; i < n; i++)
{
temp += powf(data[i] - average, 2);
}
return sqrtf((1.0 / (n - 1)) * temp);
}
c语言里conversion from 'double ' to 'float ', possible loss of data是什么意思?
conversion from 'double' to 'float', possible loss of data翻译:从double转成float,可能会造成数据丢失。源码
现在的源码计算机,double类型存储占8字节,源码源码级调试float类型存储占4字节,源码当两个不同类型的源码pyh源码数据进行赋值时,系统进行隐式类型转换,源码高精度向低精度的源码赋值时,低精度变量无法完整存储高精度数据,源码系统会自动“截断”部分内容,源码完成数据转存,源码这样就有可能会造成数据精度丢失。源码
在C/C++语言中,源码Fractals源码浮点型常数的源码默认类型是double类型,如0.5 ,源码.等,源码判定若想得到float类型常数,则要在常数后加f 字符,如:0.5f ,lapackdgees源码 .f等
当把double类型数据赋值给float类型变量时,系统编译时会报以下警告:
warning C: '=' : conversion from 'double' to 'float', possible loss of data
一般这种错误常见于:
用浮点常数给float类型变量赋值,如:float f=0.1 ; 正确写法为:float f=0.1f ;
调用返回值类型为double的函数,给float类型变量赋值,如:float f=pow(x,n); pow返回参数x的n次幂。 正确写法:float f=powf(x,n); //调用正确的函数
因此,数据间赋值一定要采用正确的类型,建议在使用浮点数时,只使用double类型。