在Python中确定特定数字的精度和小数位数

2024-01-16

我在 Python 中有一个包含浮点数的变量(例如num = 24654.123),并且我想确定数字的精度和小数位数(在 Oracle 意义上),因此 123.45678 应该给我 (8,5),12.76 应该给我 (4,2),等等。

我首先考虑使用字符串表示(通过str or repr),但是对于大数字来说这些会失败(尽管我现在明白这是浮点表示的限制,这就是这里的问题):

>>> num = 1234567890.0987654321
>>> str(num) = 1234567890.1
>>> repr(num) = 1234567890.0987654

Edit:

下面有好点。我应该澄清一下。该数字已经是浮点数,并通过 cx_Oracle 推送到数据库。我正在尝试在 Python 中尽我所能来处理对于相应数据库类型来说太大的浮点数,而不是执行 INSERT 和处理 Oracle 错误(因为我想处理字段中的数字,而不是记录中的数字)一次)。我猜map(len, repr(num).split('.'))我能得到的最接近浮点数的精度和规模吗?


获取小数点左边的位数很容易:

int(log10(x))+1

由于浮点值固有的不准确性,小数点右侧的位数更加棘手。我还需要几分钟才能弄清楚这一点。

Edit:基于这个原则,这里是完整的代码。

import math

def precision_and_scale(x):
    max_digits = 14
    int_part = int(abs(x))
    magnitude = 1 if int_part == 0 else int(math.log10(int_part)) + 1
    if magnitude >= max_digits:
        return (magnitude, 0)
    frac_part = abs(x) - int_part
    multiplier = 10 ** (max_digits - magnitude)
    frac_digits = multiplier + int(multiplier * frac_part + 0.5)
    while frac_digits % 10 == 0:
        frac_digits /= 10
    scale = int(math.log10(frac_digits))
    return (magnitude + scale, scale)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Python中确定特定数字的精度和小数位数 的相关文章

随机推荐

  • 如何处理 Perl 正则表达式中的特殊字符?

    我正在使用 Perl 程序从文件中提取文本 我有一个字符串数组 用作文本的分隔符 例如 pat arr 1 arr 2 if src pat print 1 但是 数组中的两个字符串是 450 and Buy now 这些的问题在于字符串中
  • Android:应用内购买查询不返回任何产品(skuDetails)

    我正在开发我的第一个 Android 应用程序 我确实在堆栈溢出方面学到了很多东西 但我目前的问题还没有找到解决方案 我尝试实现 应用内购买 我做了以下事情 1 在开发者控制台中 我上传了经过 alpha 和 beta 测试的已签名 apk
  • django.db.utils.IntegrityError:唯一约束失败:rango_category__new.slug

    我正在使用 Django 从 Tango 学习 Django 但是当我输入以下内容时 我不断收到此错误 python manage py makemigrations rango python manage py migrate 这是输出
  • 如何在C++中使用OpenCV检测多个物体?

    我从这个答案中得到了启发here https stackoverflow com a 43076532 385127 这是一个Python实施 但我需要C 这个答案非常有效 我的想法是 detectAndCompute to get key
  • 在 Play 中定义全局变量的最佳方式! 2.0应用

    游戏中 2 0 一个就可以用Global据记录here http www playframework org documentation 2 0 ScalaGlobal Global需要位于默认 空 包中 我的应用程序中还需要全局变量 其中
  • 我想获取Java中的当前时间,但没有互联网,也没有系统时间

    我想获得准确的当前时间 我不想要系统时间 因为任何人都可以更改系统时间 并且我想在不访问互联网的情况下执行此操作 有什么办法吗 时间服务器 设置一个时间服务器 https en m wikipedia org wiki Time serve
  • ASP.NET Core 2.2 创建身份用户

    ASP Net Core 全新 必须使用 Identity 创建一个 asp net core 2 2 项目 并让用户播种 我找不到任何有关如何准确执行此操作的文档 我能够找到创建身份角色的代码 无论如何编译 还没有达到可以运行它的位置 p
  • 在控制台中移动光标和打印字符不适用于睡眠[重复]

    这个问题在这里已经有答案了 我想在同一个地方逐个打印一系列字符 我打印一个字母 然后睡眠等待 1 秒 使用控制台代码将光标向左移动一列 打印下一个字母 依此类推 问题是结果程序等待所有睡眠的总和 在我的示例中为 2 秒 然后仅打印最后一个字
  • Git 存储库未导出:致命:远程端意外挂起

    设置新的 git 安装 在一台 Windows 笔记本电脑上 我正在运行 在 cygwin 下 git daemon base path cygdrive c work proj 我的项目的根目录是 c work proj proj1 有一
  • 如何查找solr服务器是否正在运行

    我正在运行一个从 solr 服务器获取搜索结果的应用程序 但是当服务器未运行时 我没有收到服务器的响应 有什么方法可以发现我的服务器没有运行 以便我可以给出正确的错误消息 您可以定期 ping 您的服务器 例如http localhost
  • iOS9:崩溃报告中的重复行导致symbolicatecrash卡住

    This is 不是一个问题因为我已经找到了解决方法 我将其发布 以便其他人可以利用我在其上花费的时间 并使用我建议的解决方法 我收到了一些奇怪的崩溃报告 一行被重复了很多次 0x190e08000 0x190e49fff Notes ar
  • 三柱图

    某个过程的结果是从 A 到 C 通过 B 的路径列表 例如 which effect A1 A2 10 1 1 1 1 10 2 1 2 1 10 28 1 3 1 10 6 9 4 1 10 24 9 5 1 10 28 9 我想要的是一
  • 可捕获的致命错误:传递给 Illuminate\Routing\UrlGenerator::__construct() 的参数 2 必须是 Illuminate\Http\Request 的实例,给定 null

    当我尝试运行时出现此错误php artisan anything PHP Catchable fatal error Argument 2 passed to Illuminate Routing UrlGenerator construc
  • 苹果:联盟链接可以通过应用内购买赚钱吗?

    苹果最近 在过去一两个月内 对其联属计划进行了一系列更改 您能回答这个问题 联盟链接可以通过应用内购买赚钱吗 示例 联盟链接到一个免费应用程序 然后导致该应用程序中的应用程序内购买 是否会为链接所有者赚取佣金 先感谢您 简短的回答是 是 应
  • Android - 1 除以 2 = 0

    我一直在尝试使用我的新 IOIO for android 并且需要找到信号的频率 所以我将信号转换为二进制 然后用 1 除以 1 之间的时间 尽管当我这样做时 我发现我的输出为 0 然后我决定看看 1 2 给了我什么 令我惊讶的是它也给了
  • gluon Mobile LocalNotificationsServices.class 不工作

    大家好 我是新来的使用javafx进行Android开发 我正在尝试使用 android 创建推送通知javafx javafxports 和 gluon Mobile 我的问题是推送通知没有按照我的预期显示 我的这个想法来自 http g
  • 通过 bash 脚本询问 MongoDB 是否是 Master

    我的 mongodb 应该每天运行一次备份 它由一个主设备和两个从设备运行 我需要备份其中一个 因为它们只是副本 最简单的方法是仅在一个实例上运行备份脚本 但如果这个实例宕机了怎么办 因此 我认为在主服务器上运行备份脚本会很好 因为即使其他
  • JavaScript 事件委托 - 行为

    我正在尝试创建网页 为了提高性能 我决定使用事件委托 而不是直接绑定 但我遇到了事件委托的奇怪行为 或者我错过了一些东西 这是我的 HTML 结构 div section class myClass h1 Heading 1 h1 p So
  • Matplotlib 根据值使用不同颜色的条形图

    我正在绘制各个行业及其所有股票的回报 我希望值 gt 100 为绿色 sector lst XLK XLF XLE etc for i in sector lst fig plt figure figsize 12 8 for x in s
  • 在Python中确定特定数字的精度和小数位数

    我在 Python 中有一个包含浮点数的变量 例如num 24654 123 并且我想确定数字的精度和小数位数 在 Oracle 意义上 因此 123 45678 应该给我 8 5 12 76 应该给我 4 2 等等 我首先考虑使用字符串表