当前位置: 首页 > news >正文

C语言-单精度和双精度浮点型

文章目录

  • 一、遇到的问题
  • 二、解决方案
  • 三、问题根因
    • float和double的区别:
  • 总结-浮点数


一、遇到的问题

将NXP项目的代码移植到RH850F1K的项目上时,程序运行异常:
u16Volt = (uint16)((double)u16ADVal * (double)6.3)
执行到这一行程序就跑飞了……

二、解决方案

①u16Volt = (uint16)((float)u16ADVal * (float)6.3)
②u16Volt = (uint16)(u16ADVal * 630 /100)——推荐使用

三、问题根因

RH850 F1K仅支持单精度浮点型运算
FPU

float和double的区别:

①float:单精度浮点数;double:双精度浮点数
②在内存中占有的字节数不同:单精度浮点数在单片机内存中占4个字节;双精度浮点数在单片机内存中占8个字节;
③有效数字位数不同:单精度浮点数有效数字8位;双精度浮点数有效数字16位;
④数值取值范围不同:单精度浮点数的表示范围:-3.40E+38~3.40E+38; 双精度浮点数的表示范围:-1.79E+308 ~1.79E+308;
⑤在程序中处理速度不同:一般来说,CPU处理单精度浮点数的速度比处理双精度浮点数快
⑥如果不声明,默认小数为double类型,所以如果要用float的话,必须进行强转。

float a = 1.23;   //error,编译报错
float a = (float)1.23;   //定义单精度浮点型变量
float f = 1.23f;  // 定义单精度浮点型变量
double d = 1.23;  // 定义双精度浮点型变量,可以不加"d"或"D"后缀

总结-浮点数

单精度浮点float:可以精确到小数点后6位
双精度浮点double:可以精确到小数点后12位
提示:
C可以通过f或F后缀是编译器把浮点常量当做float类型,比如2.3f和9.11E9F。
l或L后缀使一个数字成为long double类型,比如54.3l和4.32e4L。建议使用L后缀,因为字母l和数字1容易混淆
没有后缀的浮点常量为double类型。例:sizeof(1.9) = 8;

浮点二进制转换工具
在这里插入图片描述

http://www.lryc.cn/news/359628.html

相关文章:

  • STM32学习问题总结(2)—CubeMX生成项目后串口没效果和Microlib
  • 【数据结构与算法 | 二叉树篇】二叉树的前中后序遍历(递归版本)
  • Python exp用法:深入探索指数函数的奥秘
  • [有监督学习] 8.详细图解神经网络
  • 我给线程池管理框架hippo4j找bug
  • win10键盘按乱了,如何恢复?
  • 5.29工效学-人因工程人机交互
  • 头歌数据结构与算法课程设计中-硬币找零
  • Golang的内存关系
  • VRTK4.0学习——(二)
  • 体验Photoshop:无需下载,直接在浏览器编辑图片
  • Codeforces Round 895 (Div. 3)(A,B,C)题解(自己VP的,没有参加这场比赛)
  • 9秒爬取庆余年2分集剧情
  • 阿里云布置net core 项目
  • 两整数之和 ---- 位运算
  • 长城电脑压缩文件丢失了怎么办?怎么解决
  • 论文笔记《基于深度学习模型的药物-靶标结合亲和力预测》
  • ArrayList和LinkedList对比,ArrayList使用注意事项
  • 小熊家务帮day5-day7 客户管理模块1 (小程序认证,手机验证码认证,账号密码认证,修改密码,找回密码等)
  • 计算机图形学入门02:线性代数基础
  • 函数:计算数组的元素和
  • 如何进行数据库分库分表
  • Spring-Cloud-CircuitBreaker-Resilience4j (3.1.1)
  • 重构与优化-组织数据(3)
  • 游戏交易平台源码游戏帐号交易平台系统源码
  • Matlab里面的浮点数与FPGA定点数的相互转化应用(含Matlab代码,封装成函数可直接调用)
  • 机器学习笔记——欠拟合、过拟合
  • 【二进制部署k8s-1.29.4】七、验证master的安装
  • springboot获取当前数据库连接
  • 【学习笔记】Windows GDI绘图(九)Graphics详解(上)