是否有一个库类来表示浮点数?

2024-03-30

我正在编写一个应用程序,它可以进行大量操作decimal数字(例如 57.65)。由于乘法和除法很快会侵蚀它们的准确性,我想将数字存储在一个类中,以便在操作后保留它们的准确性,而不是依赖于 float 和 double。

我正在谈论这样的事情:

class FloatingPointNumber {
private:
    long m_mantissa;
    int m_dps; // decimal points
    // so for example 57.65 would be represented as m_mantissa=5765, m_dps=2
public:
    // Overloaded function for addition
    FloatingPointNumber operator+(FloatingPointNumber n);
    // Other operator overloads follow
}

虽然我可以编写这样一个类,但感觉有点像重新发明轮子,而且我确信一定有某个库类可以做到这一点(尽管这在 STL 中似乎不存在)。

有人知道这样的图书馆吗?非常感谢。


你的意思是这样的吗?

#include "ttmath/ttmath.h"
#include <iostream>

int main()
{
   // bigdouble consists of 1024*4 bytes for the mantissa
   // and 256*4 bytes for the exponent.
   // This is because my machine is 32-bit!
    typedef ttmath::Big<1024, 256> bigdouble; // <Mantissa, Exponent>

    bigdouble x = 5.05544;
    bigdouble y = "54145454.15484854120248541841854158417";
    bigdouble z = x * y * 0.01;

    std::cout << z;

    return 0;
}

您可以指定数量机器字 in the mantissaexponent随你便。 我用过TTMath http://www.ttmath.org/ttmath解决欧拉计划难题,我对此非常满意。我认为它比较稳定,如果你有问题,作者也很友善。


EDIT::我也用过MAPM http://www.tc.umn.edu/~ringx004/mapm-main.html在过去。它代表大的浮点数base 100,因此与基数 2 不同,将十进制数转换为基数 100 不会有问题。TTMAT 使用基数 2 来表示大浮点数。正如图书馆页面声称的那样,它自 2000 年以来一直稳定。正如您在库页面中看到的那样,它已在许多应用程序中使用。它是一个带有漂亮 C++ 包装器的 C 库。

MAPM nextPrime(){

    static MAPM prime = 3;
    MAPM retPrime = prime;

    prime += 2;
    while( isPrime( prime ) == false )
        prime += 2;

    return retPrime;
}

顺便说一句,如果您对 GMP 感兴趣并且正在使用 VS,那么您可以检查MPIR http://www.mpir.org/这是 Windows 的 GMP 端口;)对我来说,我发现 TTMath 比我尝试过的所有方法都更令人愉悦,而且更容易/更快,因为该库在不接触堆的情况下进行堆栈分配。基本上它不是一个任意精度的库,您可以在编译时指定精度,如上所示。

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

是否有一个库类来表示浮点数? 的相关文章

随机推荐

  • IIS 10 上的 OWIN WebApi 项目对所有操作均给出 404

    我有一个 OWIN WebAPI 项目 它在 OwinSelfHost 中工作 但在 IIS 10 上托管时总是导致 404 唯一有效的是初始页面 public index html 我在 Windows 10 计算机上运行 IIS 10
  • 如何在meteor上创建默认用户?

    如果不存在用户 我想创建一个管理员用户 我在服务器文件夹内的 js 文件上尝试过 Meteor startup function if Meteor users find count var options username admin p
  • 如何用反应钩子停止负数?

    我使用 React Hook 来增加和减少数字 但是当减少到0以下然后计算负值时我遇到了一个问题 我不想要负值 如何使用react hook停止负值 我已经尝试过这段代码 import React useState useEffect fr
  • 设置 DateTimePicker 的绑定值

    我有一个名为 Employee 的 EF 实体 它有一个可为空的 DateTime 属性 TerminationDate DisplayName Termination Date DisplayFormat ApplyFormatInEdi
  • 访问 VBA OpenForm 分组和排序

    我有一个用于数据输入的表格 我们必须返回并添加数据到这些记录中 有没有办法拉出按字段 A 对记录进行分组并按字段 B 排序的表单 这本质上会对表格 A1 1 A1 2 等进行排序 从而使添加数据变得更加容易 现在我使用 DoCmd Open
  • 服务器端处理 JWT 令牌的最佳实践[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 产生自这个线程 https stackoverflow com questions 30494383 using jwt with active
  • WPF 列表框 IndexFromPoint

    我正在 WPF ListBoxes 之间执行拖放操作 我希望能够将其插入到集合中被拖放的位置而不是列表末尾 有谁知道类似于 WinForms ListBox IndexFromPoint 函数的解决方案 我最终通过使用 DragDropEv
  • 处理 Reactor 中的并联通量

    我已经从 iterable 创建了一个并行通量 对于每个可迭代 我都必须进行休息调用 但是在执行时 即使任何一个请求失败 所有剩余的请求也会失败 我希望所有的请求都能被执行 无论失败或成功 我目前正在使用 Flux fromIterable
  • Html.Partial 不渲染部分视图

    我在视图中有以下代码 if SiteSession SubPageHelper DisplayType DisplayType List Html Partial SubLandingPage List else Html Partial
  • 可达性未按预期工作

    从 Apple 下载了 Reachability 使用此方法检查活动连接 BOOL isReachable Reachability r Reachability reachabilityWithHostName http www goog
  • LinkedIn 身份验证和聚合数据

    我正在使用 Ruby on Rails 构建一个 Web 应用程序 我希望我的用户能够验证和聚合来自 Linked In 以及其他类似 Github Twitter 等 的数据 我正在使用这些宝石 设计注册 用于身份验证的omniauth
  • Android:更改按钮的父视图

    我有一个RelativeLayout 里面有一个按钮 一旦用户单击该按钮 我想更改父视图 RelativeLayout 的背景 我知道我可以通过将父视图存储在变量中或在按钮上设置标签来做到这一点 但我会避免这种情况 我有充分的理由不希望这样
  • 动画 SVG 虚线

    我想制作一个动画虚线在 SVG 文件中 该线应该从 0 长度 增长 到全长 我发现的所有方法都不适合我 有谁有想法 如何解决这个问题 这是我的 svg 文件中的路径
  • ASP.NET MVC Razor 视图中的 Html.Raw()

    int count 0 foreach var item in Model Resources count lt 3 Html Raw div class ToString Html Raw some code count lt 3 Htm
  • 如何恢复 XGBoost 特征重要性图中的原始特征名称(预处理删除它们后)?

    在训练 XGBoost 模型之前对训练数据进行预处理 例如居中或缩放 可能会导致特征名称丢失 SO 上的大多数答案建议以不会丢失特征名称的方式训练模型 例如在数据框列上使用 pd get dummies 我使用预处理数据训练了 XGBoos
  • 你能在 TypeScript 中指定对象字面量的类型吗?

    我想知道是否有一种方法可以指定对象文字的类型 例如 如何解析此代码并分配一个B字面意思是A多变的 interface A a string interface B extends A b string const a A a b B is
  • P/Invoke 是否执行 DLL 然后将其关闭?

    如果我使用 C P Invoke 某个 DLL 实际的 C DLL 是否会在调用期间运行 然后关闭 从而销毁所有已使用的内存 或者 NET 是否会在非托管 堆 中负责 C DLL 使用的内存 并在每次调用静态函数时将指向这些对象的指针提供给
  • 将函数应用于两个列表?

    为了找到两个矩阵 X 和 Y 的行相关性 输出应该具有 X 的第 1 行和 Y 的第 1 行的相关值 因此总共有 10 个值 因为有 10 行 X lt matrix rnorm 2000 nrow 10 Y lt matrix rnorm
  • 如何使用 Play Framework 2.2.x 导入 build.sbt 中的模板

    我必须在所有模板中导入一些可重用的块 我已经定义了一个块app views blocks header scala html 将该块包含在我的所有模板中 如所述here http www playframework com document
  • 是否有一个库类来表示浮点数?

    我正在编写一个应用程序 它可以进行大量操作decimal数字 例如 57 65 由于乘法和除法很快会侵蚀它们的准确性 我想将数字存储在一个类中 以便在操作后保留它们的准确性 而不是依赖于 float 和 double 我正在谈论这样的事情