结论
1.)范围
float和double的范围是由指数的位数来决定的。
float的指数位有8位,而double的指数位有11位,分布如下:
float:
1bit(符号位) 8bits(指数位) 23bits(尾数位)
double:
1bit(符号位) 11bits(指数位) 52bits(尾数位)
于是,float的指数范围为-127+128,而double的指数范围为-1023+1024,并且指数位是按补码的形式来划分的。
其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。
float的范围为-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38;double的范围为-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308。
) 精度
float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。
float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;
double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。
详细分析
参考https://www.cnblogs.com/c-primer/p/5992696.html
验证
1.) float
float f1 = 1.23456789;
float f2 = 1.23456781;
bool fresult = qFuzzyCompare(f1, f2);
因为前6位一样,所以结果为true
2 )float
float f3 = 1.2345;
float f4 = 1.2346;
fresult = qFuzzyCompare(f3, f4);
因为第4位不一样,所以结果为false
3 ) double
double d1 = 1.23456789;
double d2 = 1.23456781;
bool dresult = qFuzzyCompare(d1, d2);
因为第8位不一样,所以结果为false
5. qFuzzyCompare 详解
Q_REQUIRED_RESULT Q_DECL_CONSTEXPR static inline Q_DECL_UNUSED bool qFuzzyCompare(double p1, double p2)
{
return (qAbs(p1 - p2) * 1000000000000. <= qMin(qAbs(p1), qAbs(p2)));
}
Q_REQUIRED_RESULT Q_DECL_CONSTEXPR static inline Q_DECL_UNUSED bool qFuzzyCompare(float p1, float p2)
{
return (qAbs(p1 - p2) * 100000.f <= qMin(qAbs(p1), qAbs(p2)));
}
本题目要求计算下列分段函数f(x)的值:注:可在头文件中包含math.h,并调用sqrt函数求平方根,调用pow函数求幂。输入格式:输入在一行中给出实数x。输出格式:在一行中按“f(x) = result”的格式输出,其中x与result都保留两位小数。输入样例1:10输出样例1:f(10.00) = 3.16输入样例2:-0.5输出样例2:f(-0.50) = -2.75代码:#include<stdio.h>#_pta计算分段函数2
在docker中使用mysq和nacos并且将容器的目录挂载到本地,好处是便于数据的备份,删除容器之后数据不会丢失,同时使用mysql数据库存储nacos的配置数据,使用docker网络实现容器之间的通信。_m2 mac docker 安装nacos
tf2的mnist的xtrain和xtest取值范围0~255,需要除以255,否则y_pre全是nan。import tensorflow.compat.v1 as tfimport tensorflow as tf2tf.disable_v2_behavior()import numpy as npfrom tensorflow.keras.datasets import mnistimport matplotlib.pyplot as pltdef add_layer(inputs,i_为什么mnist 标准化除以255 不是 256
Configuring incomplete,errors occurred 错误处理方法今天笔者在安装数据库的时候不幸遇到了问题,如下图:请参阅Cmake编译器的指定日志,,,,,,,,没事,就是有点头疼。。。。。。。。。。。百度到的结果是..._configuring incomplete, errors occurred
在测试vivo 7.0 上测试更新软件,出行错误android.os.FileUriExposedException: file:///storage/emulated/0/Download/appName-2.3.0.apk exposed beyond app through Intent.getData()解决方法在AndroidManifest.xml中添加如下代码
物联网碰壁后,这位创业者总结失败五大原因_猎云网失败原因分析
msvsmon.exe远程调试的工具。一般在这个目录下面:Microsoft Visual Studio 8\Common7\IDE\Remote Debugger\x86使用方法:1, 在被调试的电脑上打开工具,点菜单 : Tools-Options 设置好权限2,待调试的电脑上打开vS,点菜单 调试-附加到进程。传输里面选 远程(无身份验证时仅限本机)限
原谅我愚昧,Intent七大属性这个概念我也是昨天才接触到,看了一下,都是一些常用的东西,就是没有总结过,那么今天就来简单总结一下。Intent七大属性是指Intent的ComponentName、Action、Category、Data、Type、Extra以及Flag,七个属性,总体上可以分为3类:第一类:启动,有ComponentName(显式),Action(隐式),Categor
一.闭包的概念闭包是这样的一种机制:函数嵌套函数,内部函数可以引用外部函数的参数和变量。参数和变量不会被垃圾回收机制收回。1.函数嵌套函数function fn(a){ return function(){ //访问道这个a console.log(a); } } console.log(fn('hello'));//调用外部的函数 f_闭包
Expert C Programming(C专家编程)作 者:(美)LinDen,P.V.D(林登) 著,徐波 译出版社: 人民邮电出版社 编辑推荐: 书本撷取了几十个实例,细致、深入地讲解了C的历史、语言特性、声明、数组、指针、链接、运行时、内存以及分析了如何进一步学习C++等问题。 本书是一本ANSI C编程语言的高级读本。它适用于已经编写过C程序的人..._c语言讲递归的书
目录第一章 NPM 概述第二章 NPM 安装第三章 NPM 命令3.1、配置淘宝镜像源3.2、安装所有软件包3.3、安装单个软件包3.4、更新所有软件包3.5、更新单个软件包3.6、卸载指定软件包3.7、安装旧版软件包3.8、软件包版本查看3.9、软件包安装类型3.10、软件包版本介绍3.11、如何使用软件包第四章 package.json 文件4.1、文件介绍4.2、文件结构4.3、属性分类4.3.1、name4.3.1、author4.3.2、contributors4.3.3、bugs4.3.4、ho_npm 学习
第10章 对象和类面向对象编程OOP特性:抽象封装和数据隐藏多态继承代码的可重用性10.1 过程性编程和面向对象编程采用过程性编程:首先考虑遵循的步骤,然后考虑如何表示这些数据。采用OOP: 首先考虑数据,考虑如何表示数据,和考虑如何使用数据。(首先从用户的角度考虑对象——描述对象所需的数据以及描述用户与数据交互所需的操作。完成对接口的描述后,需要确定如何实现接口和数据存储...