codecamp

Python3 math.ulp()方法 - 求浮点数的最小有效比特位

Python math 模块  math 模块


描述

math.ulp(x)方法返回给定浮点数的最小单位。

这个单位是指在给定浮点数的范围内,两个相邻的浮点数之间的差值。

例如,对于输入值3.1415926,math.ulp(x)将返回2.220446049250313e-16。

这意味着在3.1415926的范围内,相邻的两个浮点数之间的差值为2.220446049250313e-16。


语法

math.ulp()方法语法如下:

math.ulp(x)

参数说明:

  • x -- 必需,一个数字

返回值

  • 如果 x 是 NaN (非数字),则返回 x。
  • 如果 x 为负数,则返回 ulp(-x)。
  • 如果 x 为正数,则返回 x。
  • 如果 x 等于零,则返回 去正规化的 可表示最小正浮点数 (小于 正规化的 最小正浮点数 sys.float_info.min)。
  • 如果 x 等于可表示最大正浮点数,则返回 x 的最低有效比特位的值,使得小于 x 的第一个浮点数为 x - ulp(x)。
  • 在其他情况下 (x 是一个有限的正数),则返回 x 的最低有效比特位的值,使得大于 x 的第一个浮点数为 x + ulp(x)。

实例

以下实例返回指定数字的精度:

import math
x = 1.0
p = 0
while x != x + 1:
   x = x * 2
   p = p + 1
   print(f"当前x的值:{x},当前x的循环次数{p},当前x的精度{math.ulp(x)}")
 

输出结果:

当前x的值:2.0,当前x的循环次数1,当前x的精度4.440892098500626e-16
当前x的值:4.0,当前x的循环次数2,当前x的精度8.881784197001252e-16
当前x的值:8.0,当前x的循环次数3,当前x的精度1.7763568394002505e-15
当前x的值:16.0,当前x的循环次数4,当前x的精度3.552713678800501e-15
当前x的值:32.0,当前x的循环次数5,当前x的精度7.105427357601002e-15
当前x的值:64.0,当前x的循环次数6,当前x的精度1.4210854715202004e-14
当前x的值:128.0,当前x的循环次数7,当前x的精度2.842170943040401e-14
当前x的值:256.0,当前x的循环次数8,当前x的精度5.684341886080802e-14
当前x的值:512.0,当前x的循环次数9,当前x的精度1.1368683772161603e-13
当前x的值:1024.0,当前x的循环次数10,当前x的精度2.2737367544323206e-13
当前x的值:2048.0,当前x的循环次数11,当前x的精度4.547473508864641e-13
当前x的值:4096.0,当前x的循环次数12,当前x的精度9.094947017729282e-13
当前x的值:8192.0,当前x的循环次数13,当前x的精度1.8189894035458565e-12
当前x的值:16384.0,当前x的循环次数14,当前x的精度3.637978807091713e-12
当前x的值:32768.0,当前x的循环次数15,当前x的精度7.275957614183426e-12
当前x的值:65536.0,当前x的循环次数16,当前x的精度1.4551915228366852e-11
当前x的值:131072.0,当前x的循环次数17,当前x的精度2.9103830456733704e-11
当前x的值:262144.0,当前x的循环次数18,当前x的精度5.820766091346741e-11
当前x的值:524288.0,当前x的循环次数19,当前x的精度1.1641532182693481e-10
当前x的值:1048576.0,当前x的循环次数20,当前x的精度2.3283064365386963e-10
当前x的值:2097152.0,当前x的循环次数21,当前x的精度4.656612873077393e-10
当前x的值:4194304.0,当前x的循环次数22,当前x的精度9.313225746154785e-10
当前x的值:8388608.0,当前x的循环次数23,当前x的精度1.862645149230957e-09
当前x的值:16777216.0,当前x的循环次数24,当前x的精度3.725290298461914e-09
当前x的值:33554432.0,当前x的循环次数25,当前x的精度7.450580596923828e-09
...
当前x的值:1125899906842624.0,当前x的循环次数50,当前x的精度0.25
当前x的值:2251799813685248.0,当前x的循环次数51,当前x的精度0.5
当前x的值:4503599627370496.0,当前x的循环次数52,当前x的精度1.0
当前x的值:9007199254740992.0,当前x的循环次数53,当前x的精度2.0   

Python math 模块  math 模块


Python3 math.modf()方法 -求浮点数的小数部分
Python3 math.lcm()方法 -求最小公倍数
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

相关教程

Python基础教程

python内置库

python3 math模块

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }