如何将double转换成float类型
如果不考虑丢失问题:float.Parse(a.ToString());
浮点变量可以提升为更大基数的类型(从 float 类型到 double 类型)。当您对浮点变量执行算术时,通常会出现提升。此算术始终以与具有最高精度的变量一样高的精度执行。例如,请考虑下列类型声明:
float f_short;double f_long;long double f_longer;f_short = f_short * f_long;
在前面的示例中,变量f_short提升到类型 double 并且与f_long相乘;然后,结果舍入到类型 float,然后赋给f_short。
扩展资料:
在以下示例中(使用前面示例中的声明),将以浮点(32 位)精度对变量执行算术;结果随后将提升到 double 类型:
f_longer = f_short * f_short;
double f_long;
long double f_longer;
f_short = f_short * f_long;
在前面的示例中,变量f_short提升到类型 double 并且与f_long相乘;然后,结果舍入到类型 float,然后赋给f_short。
在以下示例中(使用前面示例中的声明),将以浮点(32 位)精度对变量执行算术;结果随后将提升到 double 类型:
f_longer = f_short * f_short;
在 C/C++ 中,上述语句等号右边 0.1,认为是个 float,但是编译器却把它认为是个 double(因为小数默认是 double),所以要报这个 warning,一般改成0.1f就没事了。
void main()
{
double a=123.4L;
float b;
b = (float) a;
printf("%f",b);
}
如果数值范围超界,则不应转换。
C语言中double申请的内存空间是float的两倍,如果你强制转换会使数据丢失,只取后面的位数。
如果必须要转换,强制类型转换符为(float)比如楼上写的b = (float) a;
double d = Double.parseDouble(String.valueOf(f)) ;
System.out.println(d);
直接转换会设计到精度问题,所以需要借助字符串 保证不丢失数据
#include <stdio.h>
int main ()
{
double d=1.1111;
float f=(float)d;
printf("f=%lf,d=%lf\n",f,d);
return 0;
}