如何将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就没事了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-12-08
double 转换成float, 如果数值没有超界,例子如下:

void main()
{
double a=123.4L;
float b;
b = (float) a;
printf("%f",b);
}

如果数值范围超界,则不应转换。
第2个回答  2009-12-08
你要从double跟float申请的存储空间来理解。
C语言中double申请的内存空间是float的两倍,如果你强制转换会使数据丢失,只取后面的位数。
如果必须要转换,强制类型转换符为(float)比如楼上写的b = (float) a;
第3个回答  2017-11-07
float f = 1.2f;
double d = Double.parseDouble(String.valueOf(f)) ;
System.out.println(d);
直接转换会设计到精度问题,所以需要借助字符串 保证不丢失数据
第4个回答  2017-11-07
#include <stdio.h>
int main ()
{
    double d=1.1111;
    float f=(float)d;
    printf("f=%lf,d=%lf\n",f,d);
    return 0;
}

相似回答