Python 和/或 C/C++ 中的高精度算术?

2024-04-04

摘要:哪个 Python 包或 C 库是非常高精度算术运算的最佳选择?

我有一些转换小数天数的函数(0.0-0.99999..)转换为人类可读的格式(小时、分钟、秒;但更重要的是:毫秒、微秒、纳秒)。

转换是通过以下函数完成的: (请注意,我还没有实施时区校正)

d = lambda x: decimal.Decimal(str(x))
cdef object fractional2hms(double fractional, double timezone):
    cdef object total, hms, ms_mult
    cdef int i
    hms = [0,0,0,0,0,0]
    ms_mult = (d(3600000000000), d(60000000000), d(1000000000), d(1000000), d(1000), d(1))
    # hms = [0,0,0,0,0]

    total = d(fractional) * d(86400000000000)
    for i in range(len(ms_mult)):
        hms[i] = (total - (total % ms_mult[i])) / ms_mult[i]
        total = d(total % ms_mult[i])

    return ([int(x) for x in hms])

和小数:

def to_fractional(self):
        output = (self.hour / d(24.0)) + (self.minute / d(1440.0))
        output += (self.second / d(86400.0)) + (self.millisecond / d(86400000.0))
        output += self.microsecond / d(86400000000.0)
        output += self.nanosecond * (d(8.64) * d(10)**d(-9))
        return output

然而,我的来回转换结果并不准确:

jdatetime.DayTime.fromfractional(d(0.567784356873)).to_fractional()
Decimal('0.56779150214342592592592592592592592592592592592592592592592592592592592592592592592592592592592592592592592592592')
# Difference in-out: Decimal('0.000007145270')

当我改变时d()返回一个常规的 Python 浮点数:

# Difference in-out: 7.1452704258900823e-06 (same)

因此,我的问题是:哪个 Python 包或 C 库能够更准确地做到这一点?


差异是由于代码中的错误造成的,而不是由于任何准确性问题。线路

output += self.nanosecond * (d(8.64) * d(10)**d(-9))

应该是这样的

output += self.nanosecond / d(86400000000000)

此外,在代码中使用浮点文字并将其转换为一个坏主意Decimal。这将首先将文字数字舍入为浮点精度。后期转换为Decimal无法恢复丢失的精度。尝试

d = decimal.Decimal

并仅使用整数文字(只需删除.0 part).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 和/或 C/C++ 中的高精度算术? 的相关文章

  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • 将 VSIX 功能添加到 C# 类库

    我有一个现有的单文件生成器 位于 C 类库中 如何将 VSIX 项目级功能添加到此项目 最终目标是编译我的类库项目并获得 VSIX 我实际上是在回答我自己的问题 这与Visual Studio 2017 中的单文件生成器更改 https s
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • 向 Altair 图表添加背景实心填充

    I like Altair a lot for making graphs in Python As a tribute I wanted to regenerate the Economist graph s in Mistakes we
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • 每个 X 具有多个 Y 值的 Python 散点图

    我正在尝试使用 Python 创建一个散点图 其中包含两个 X 类别 cat1 cat2 每个类别都有多个 Y 值 如果每个 X 值的 Y 值的数量相同 我可以使用以下代码使其工作 import numpy as np import mat
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 对年龄列进行分组/分类

    我有一个数据框说df有一个柱子 Ages gt gt gt df Age 0 22 1 38 2 26 3 35 4 35 5 1 6 54 我想对这个年龄段进行分组并创建一个像这样的新专栏 If age gt 0 age lt 2 the
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • Conda SafetyError:文件大小不正确

    使用创建 Conda 环境时conda create n env name python 3 6 我收到以下警告 Preparing transaction done Verifying transaction SafetyError Th
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • Python Selenium:如何在文本文件中打印网站上的值?

    我正在尝试编写一个脚本 该脚本将从 tulsaspca org 网站获取以下 6 个值并将其打印在 txt 文件中 最终输出应该是 905 4896 7105 23194 1004 42000 放置的动物 的 HTML span class
  • NotImplementedError:无法将符号张量 (lstm_2/strided_slice:0) 转换为 numpy 数组。时间

    张量流版本 2 3 1 numpy 版本 1 20 在代码下面 define model model Sequential model add LSTM 50 activation relu input shape n steps n fe

随机推荐

  • 使用 URI (Xamarin) 的 Android FFImageLoading

    我正在尝试从光标加载联系人图像 因此我有每个图像的 URI 但我想使用 FFImageLoading 库将这些图像添加到视图中 以便我可以轻松加载占位符并进行圆形变换 但是 我在使用具有 URI 的库时遇到困难 我尝试使用 Path 将 U
  • android:如何从twitter获取趋势?

    我想从 Twitter 获取趋势 任何人都可以帮我解决这个问题吗 我已经使用以下方式登录了login button并且获得了活跃的会话 现在问题是如何获取趋势标签 https dev twitter com rest reference g
  • 如何在 Rmarkdown 演示文稿(滑动)中回显代码之前显示块输出?

    我最近开始在 Rmarkdown 中使用 Slidy 演示模板 并且喜欢每张幻灯片如何允许您向下滚动以获取更多内容 我使用它的一种方法是与我的学生共享绘图 请参阅下面的示例代码 在一张幻灯片上 我可以显示绘图以及用于创建绘图的确切代码 可以
  • 为什么 VSCode 在启动调试器之前不激活 conda?

    当我在 VSCode 中启动调试器时 只有在调试过程因 缺少必需的依赖项 导入错误而停止后 conda 环境才会被激活 立即重新启动调试器就可以正常工作了 此问题发生在 Anaconda base 和其他环境中 测试代码 import pa
  • 使用 ui-router(AngularJS) 时,$rootScope.$on("$routeChangeSuccess) 或 $rootScope.$on("$stateChangeSuccess) 不起作用

    我在应用程序中使用 UI router 来嵌套视图 但同时我想在路由更改时监听事件 在使用 UI router 之前 routeChangeSuccess 触发得很好 但在 ui router 之后 它不会触发 文档建议使用 viewCon
  • 将csv字符串读入向量C++

    csv转vector有很多选项 包括读取 csv 文件并将其所有数据添加到 C 中的向量中 https stackoverflow com questions 60322479 read a csv file and and add its
  • 设计决策:(VB.NET)我应该创建一个类或模块来轻松连接到多个数据库之一吗?

    基本上 我们有三个数据库可以从中获取数据 一种是 SQL Server 数据库 一种是 Access 数据库 连接起来特别烦人 因为我们必须映射网络驱动器等 最后一个将是 Oracle 数据库 当 IT 最终授予我们权限时 我正在考虑创建一
  • 调试时无法进入迭代器块 (C#)

    我正在尝试调试从单元测试项目执行的代码 但是当我尝试进入一个方法时 它只是直接传递到下一行 并且不会命中该方法内的断点 该方法位于不同项目中的一个类上 但所有代码都是在调试模式下构建的 我已经尝试清理和重建解决方案 但没有任何乐趣 然而 自
  • 我可以在 Docker for Mac 中使用不安全的 Kubernetes API 端点吗?

    当我在 Docker for Mac 中运行 Kubernetes 时 Kube API 似乎只能从安全端点访问https 本地主机 6443 https localhost 6443 通过 minikube 我可以使用 Kube API
  • Sql CE 多条语句不一致

    长期以来 您确实可以使用 SQL CE 执行多个语句 https stackoverflow com questions 6970502 can i execute multiple statements in sql server com
  • 在 Windows 中执行全屏抓取

    我正在研究一个想法 涉及全面捕获屏幕 包括窗口和应用程序 对其进行分析 然后将项目作为叠加层绘制回屏幕上 我想学习图像处理技术 如果我可以直接访问 Windows 屏幕 我可以获得大量的数据来处理 我可以用它来构建以前从未见过的自动化工具
  • 获取分离片段中的上下文/活动?

    有一个类似的问题 https stackoverflow com questions 20464273 get the application context in fragment in android大多数答案建议使用在哪里getAct
  • 未捕获的类型错误:使用 $.param() 序列化传单数据时无法读取未定义的属性“lat”

    我想先说一下 我对 JavaScript 很陌生 我正在尝试使用 Leaflet 和 AJAX 调用来发布用户位置和地图边界 在我的事件处理程序中stateUpdater onLocationFound日志语句打印出正确的用户坐标和地图边界
  • 具有后备功能的 HTML5 视频标签

    我正在寻找在 html 中嵌入视频和音频的解决方案 新的 videotag 支持 ogg 和 mp4 但是否有针对 flv 和其他格式的后备解决方案 例如 如果我想嵌入一个 ogg 它会检查是否支持html5 如果不支持 它会使用后备 如果
  • 是否可以创建一个 git 存储库,其中分支是来自其他存储库的克隆?

    情况如下 我继承了两台独立的机器 一台用于 开发 另一台是生产机器 问题是 它们当然不同步 为了使情况更加清晰 我在每台计算机上创建了应用程序目录的独立 git 存储库 我现在希望能够比较这些存储库 以便找出它们之间的不同之处 我的想法是创
  • WCF TCP 客户端 - 如何使用它们的基本指南?

    我有一个 WCF 服务并希望使用 TCP 绑定连接到它 这一切都很好 但是你应该如何处理客户呢 我注意到 如果您为每个调用创建一个新客户端 它不会重新使用该通道 并会留下一堆 TCP 连接 直到超时 创建客户端 调用其方法 然后关闭它是正常
  • HTML 5 视频流 .ism 文件?

    我有一个带有媒体服务 4 0 的 IIS 7 0 服务器设置 我创建了一个非常简单的 html 5 页面 其中包含video以其source指向一个 ism文件 是否可以使用 html 5 中的 ism 文件的清单来播放视频 就像在 sil
  • WordPress 插件 WooCommerce,自定义支付网关设置未保存

    我正在为 WordPress 插件 WooCommerce 开发自定义支付网关 我似乎无法保存支付网关的设置 当我在字段中输入信息然后单击 保存 时 页面刷新 所有字段均为空白 我究竟做错了什么 这是我的代码
  • 将参数传递给mapDispatchToProps()

    我不能撒谎 我对 React Redux 有点困惑 我认为很多操作都需要参数 例如从商店中删除项目 但即使我仍在阅读如何以这种方式从组件分派来传递参数 现在大约 2 小时 我没有得到任何答案 我被尝试过this props dispatch
  • Python 和/或 C/C++ 中的高精度算术?

    摘要 哪个 Python 包或 C 库是非常高精度算术运算的最佳选择 我有一些转换小数天数的函数 0 0 0 99999 转换为人类可读的格式 小时 分钟 秒 但更重要的是 毫秒 微秒 纳秒 转换是通过以下函数完成的 请注意 我还没有实施时