如何将double转换成float类型

 我来答
教育小百科达人
2020-10-11 · TA获得超过156万个赞
知道大有可为答主
回答量:8828
采纳率:99%
帮助的人:456万
展开全部

如果不考虑丢失问题: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就没事了。

L_o_o_n_i_e
2009-12-08 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:5060万
展开全部
double 转换成float, 如果数值没有超界,例子如下:

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

如果数值范围超界,则不应转换。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dd77913
2009-12-08 · 超过11用户采纳过TA的回答
知道答主
回答量:71
采纳率:0%
帮助的人:41.9万
展开全部
你要从double跟float申请的存储空间来理解。
C语言中double申请的内存空间是float的两倍,如果你强制转换会使数据丢失,只取后面的位数。
如果必须要转换,强制类型转换符为(float)比如楼上写的b = (float) a;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
专业知识来帮你
2017-11-07 · TA获得超过457个赞
知道小有建树答主
回答量:182
采纳率:75%
帮助的人:81.7万
展开全部
float f = 1.2f;
double d = Double.parseDouble(String.valueOf(f)) ;
System.out.println(d);
直接转换会设计到精度问题,所以需要借助字符串 保证不丢失数据
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
靠谱儿妈妈
2017-11-07 · TA获得超过957个赞
知道小有建树答主
回答量:741
采纳率:74%
帮助的人:254万
展开全部
#include <stdio.h>
int main ()
{
    double d=1.1111;
    float f=(float)d;
    printf("f=%lf,d=%lf\n",f,d);
    return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式