教育python模块来解析float并检查IEEE754算法的内部。

floatedu的Python项目详细描述


Float-IEEE754-说教

用于解析浮点数并检查 IEEE 754内部表示。在

安装

pip install floatedu

用例

它可以用来了解ieee754模型是如何工作的。 这意味着它几乎只对教育有用 目的。在

简单示例

使用float32规范创建3个浮动并打印它们 作为本地浮动:

^{pr2}$

按通用公式打印号码详细信息:

print(repr(f_num))# {'value': float('1234.4566650390625'),#  'kind': 'normal', 'k': 8, 'p': 24, 'bias': 127,#  'bits': '0_10001001_00110100100111010011101',#  'sign': 1, 'exponent': 137, 'fraction': 0.20552408695220947,#  'significand': 1.2055240869522095,# }

所有东西都可以作为一个属性访问:

print(f_num.kind,f_num.sign,f_num.exponent,f_num.fraction)# normal 1 137 0.20552408695220947

Floatlist的子类,可以实时更新:

print(f_num.sign_bit)print(f_num.exponent_bits)print(f_num.fraction_bits)f_num.sign_bit[0]=1#  Make number negativeprint(f_num)# [0]# [1, 0, 0, 0, 1, 0, 0, 1]# [0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1]# -1234.4566650390625

格式和公式

ieee754定义了各种类型的二进制浮点。 这个模块实现了标准,此外,还实现了一些非标准 类型。在

IEEE 754 bits layouts

位按照方案从左到右排列 sign . exponent . fractionp值包括隐式位(not 实际存储)。在

例如,BFloat16存储为:

BFloat16 bits layout

种类

一个数字可以是零,无穷大,而不是一个正常或低于正常的数字。 前三个例子已经是值了。正规数和次正规数 是根据一个方程式计算出来的。在

确定如何计算该值足以测试exp和{} 对零(全0)和-1(全1,2的补码):

Float type algorithm

零和无穷大

对于零和无穷大,这个值是微不足道的。如果最左边的位是0,则 值为正(+0或+inf)。否则为负(-0或-inf)。在

不是数字

如果不是数字,如果不返回 适当的“非价值”。在

正常

正常数值可以通过公式(通用公式和 float32公式):

General formula for floatsFormula for float32

另一种考虑这个公式的方法是考虑 数字作为带符号位的定点二进制数。在

在这种情况下,整数部分是指数和分数 部分(加1)是有意义的。一、 e

Float as fixed point binary

实施

每个实现的浮点类型都作为一个类可用:

fromfloateduimport*[Float,Float8,Float16,BFloat16,Float64,Float32,Float128,Float256]

实际的实现类是Float,无法实例化 直接。在

它必须作为类提供pk和{}值的子类 属性(请参见floatedu/Float.py)。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JNI和取消异步任务   java整数n作为List<String>的第二个参数传递。子列表(fromIndex,toIndex),但是stacktrace说toIndex在Kotlin中是n+2   如何在Java中正确嵌套多个ArrayList/Maps?   在嵌套条件语句中比较数组中的值时,java List没有打印正确的值   从CRON作业运行java代码   JRE使用jvisualvm检测到java致命错误   java将字符添加到BufferedReader中   带有枚举的java单例与带有双重检查锁定的单例   Java中的编译器构造基类的更改会影响子类的字节码吗?   Java作为Windows服务用户数据路径   java clone():ArrayList。克隆人()我认为它是一个肤浅的复制品   在jfilechooser多文件选择器启用中打开对话框后,java文件将显示所选文件   java在常用的操作方法中使用反射可以吗?   java ReloadableResourceBundleMessageSource。getMessage()不使用我给它的参数