C++ 十进制算术库

2024-03-24

我对向 Visual Studio (2013) 添加附加库以及处理某些事物(例如金钱)时浮点数和双精度数通常不够准确的想法相当陌生。我最初认为 BOOST::Multi precision cpp_dec_float 可以解决这个问题,但当我测试它时,我注意到一些不寻常的事情,并意识到我可能是错的。例如,

cpp_dec_float_50 decimal = 0.45;
double dbl = 0.45; //for comparison

cout << fixed << setprecision(50) << "boost:    " << decimal << endl;
cout << "double:  " << dbl << endl;

会给出这样的结果

boost:    0.45000000000000001110223024625156540423631668090820
double:   0.45000000000000001000000000000000000000000000000000

而不是我所期望的(0.45000000000000000000000000000000000000000000000000)。

这不是比仅使用浮点数或双精度数更准确吗?如果不是,我假设我刚刚链接到 VS2013 的 boost 库具有任意整数类型,这可以接受吗?我唯一不喜欢在这种情况下使用整数的是,我可能必须先将利率转换为整数,然后再将其与货币相乘,这可能会导致非常非常大的数字,这可能会或可能不会导致性能问题。

(假设 BOOST 不是我需要的)您对英特尔十进制浮点库有何看法?我还无法让它工作,所以我想知道这是否值得付出努力。还有其他类似的库值得一试吗?


因此,您将一个数字(已经是浮点型)分配给十进制变量。所以你关心的错误已经出现了。

相反,让我们为它分配一个包含正确数字的字符串:

#include <boost/multiprecision/cpp_dec_float.hpp>
#include <iostream>
using namespace std;
using boost::multiprecision::cpp_dec_float_50;

int main() {
    cpp_dec_float_50 decimal("0.45");
    double dbl = 0.45; //for comparison

    cout << fixed << setprecision(50) << "boost:   " << decimal << endl;
    cout << "double:  " << dbl << endl;
}

哪个输出:

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

C++ 十进制算术库 的相关文章

  • 添加 Nullable int 时保持 null?

    我想添加可为空的int 并保留null当所有值都是null 我想要这个结果 1 2 3 1 null 1 null null null O null 0 问题是 如果我将一个值与 null 相加 结果为 null int i1 1 int
  • Poco c++Net:Http 从响应中获取标头

    我使用 POCO C Net 库进行 http 我想尝试制定持久缓存策略 首先 我认为我需要从缓存标头中获取过期时间 并与缓存值进行交叉检查 如果我错了 请告诉我 那么我如何从中提取缓存头httpResponse 我已经看到你可以用 Jav
  • 单元测试验证失败

    我正在运行我的单元测试PostMyModel路线 然而 在PostMyModel 我用的是线Validate
  • C++ 长 switch 语句还是用地图查找?

    在我的 C 应用程序中 我有一些值充当代表其他值的代码 为了翻译代码 我一直在争论使用 switch 语句还是 stl 映射 开关看起来像这样 int code int value switch code case 1 value 10 b
  • linq 中使用字符串数组 c# 的 'orderby'

    假设我有一个这样的方法定义 public CustomerOrderData GetCustomerOrderData string CustomerIDs var query from a in db Customer join b in
  • CSharpRepl emacs 集成?

    我碰巧知道莫诺CSharpRepl http www mono project com CsharpRepl 是否有 emacs csharp 模式使用它在一个窗口中运行 REPL 并像 python 模式一样在另一个窗口中编译 运行 C
  • 在 C# 中调用 C++ 库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有很多用 C 编写的库 我想从 C 调用这些库 但是 我遇到了很多问题 我想知道是否有书籍或指南告诉我如何做到这一点 Dll导入 htt
  • std::call_once 可重入且线程安全吗?

    std call once http en cppreference com w cpp thread call once是线程安全的 但它也是可重入的吗 我使用 VS2012 调试和发布 进行的测试表明 调用std call once从单
  • 从模板切换传递的类型

    在 C 中是否可以检查传递给模板函数的类型 例如 template
  • 运行需要 MySql.Data 的内置 .NET 应用程序

    我在运行我编写的内置 NET 应用程序时遇到问题 我的应用程序使用最新的 MySql 连接器 该连接器安装在我的系统上 当我尝试将其添加为引用时 该连接器显示为 NET 4 Framwork 组件 当我在环境中以调试模式运行应用程序时 一切
  • 在开关中使用“goto”?

    我看到了一个建议的编码标准 内容如下Never use goto unless in a switch statement fall through 我不跟 这个 例外 案例到底是什么样的 这证明了goto 此构造在 C 中是非法的 swi
  • MFC:如何设置CEdit框的焦点?

    我正在开发我的第一个简单的 MFC 项目 但我正在努力解决一个问题 想要设置所有的焦点CEdit其中一个对话框中的框 我的想法是 当打开对话框时 焦点位于第一个编辑框上 然后使用 选项卡 在它们之间交换 我看到了方法SetFocus 但我无
  • Linux mremap 不释放旧映射?

    我需要一种方法将页面从一个虚拟地址范围复制到另一个虚拟地址范围 而无需实际复制数据 范围很大 延迟很重要 mremap 可以做到这一点 但问题是它也会删除旧的映射 由于我需要在多线程环境中执行此操作 因此我需要旧映射能够同时使用 因此稍后当
  • 从浏览器访问本地文件?

    您好 我想从浏览器访问系统的本地文件 由于涉及大量安全检查 是否可以通过某种方式实现这一目标 或使用 ActiveX 或 Java Applet 的任何其他工作环境 请帮帮我 要通过浏览器访问本地文件 您可以使用签名的 Java Apple
  • 在 OpenGL 中渲染纹理 1 到 1

    所以我想做的是使用 OpenGL 和 C 将纹理渲染到平面上 作为显示图像的一种方式 但是我需要确保在渲染纹理时没有对纹理进行任何处理 抗锯齿 插值 平滑 模糊等 这是 OpenGL 处理渲染纹理的默认方式吗 或者是否需要设置一些标志才能禁
  • 如何停止无限循环?

    我正在编写一个程序 该程序将计算三角形或正方形的面积 然后提示用户是否希望计算另一个 我的代码已经运行到可以计算任一形状的面积的程度 但随后不再继续执行代码的其余部分 例如 如果选择了正方形 则计算面积 然后返回到正方形边长的提示 我假设这
  • 使用 jQuery 从 ASP.Net JSON 服务获取数据

    我正在尝试调用 Google 地图地理编码 API 从纬度 经度对中获取格式化的地址 然后将其记录到控制台 我正在尝试获取为给定位置返回的第一个 formatted address 项目 我很简单无法从 JSON 中提取该项目 我不知道为什
  • 如何调试 .NET 运行时中的内部错误?

    我正在尝试调试一些处理大文件的工作 代码本身works 但 NET 运行时本身会报告零星错误 对于上下文 这里的处理是一个 1 5GB 文件 仅加载到内存中一次 在循环中处理和释放 故意尝试重现此否则不可预测的错误 我的测试片段基本上是 t
  • LINQ 中的“from..where”或“FirstOrDefault”

    传统上 当我尝试从数据库中获取用户的数据时 我使用了以下方法 在某种程度上 DbUsers curUser context DbUsers FirstOrDefault x gt x u LoginName id string name c
  • 来自 3rd 方库的链接器错误 LNK2019

    我正在将旧的 vc 6 0 应用程序移植到 vs2005 我收到以下链接器错误 我花了几天时间试图找到解决方案 错误LNK2019 无法解析的外部符号 imp 创建AwnService 52 在函数 public int thiscall

随机推荐

  • 如何为 Android 应用程序创建导游

    几个月前 我给自己买了一台 HTC ONE X 我很欣赏他们通过交互式小部件和帮助功能引导用户在手机中迈出第一步的方式 我想将这种功能添加到我们正在构建的应用程序 Rogerthat 中 但我想知道是否有工具 库可以帮助我实现这一目标 Ro
  • javac 的类路径和源路径选项之间的差异

    我阅读了 Sun 文档和 Stack Overflow 上的很多帖子 但我仍然对 Java 编译器选项之间的差异感到困惑 cp and sourcepath 假设我有这个目录结构 c Java project1 src where the
  • asp.net MVC 3中的简单Ajax,更新模型和重新渲染部分

    我来自一个更WPF应用程序背景 我习惯了绑定等 然后进入网站可能会带来问题 因为它们的工作方式有很大不同 我正在尝试做一个简单的Ajax行动但不知道从哪里开始 基本上我想制作一个下拉列表来更改模型上的一个属性并重新渲染页面的该部分 也许这太
  • 在 iOS 上使用 CommonCrypto 的 PBKDF2

    我正在尝试使用CommonCrypto使用生成密钥PBKDF2但我似乎无法导入CommonCrypto CommonKeyDerivation h 我只是错误地认为没有找到 有任何想法吗 编辑 我可能应该提到我已经添加了安全框架 我可以导入
  • 检测 TextEditor SwiftUI 的键盘“提交按钮”按下

    在 SwiftUI 上TextField您可以使用以下命令为键盘的返回 提交按钮设置操作 onSubmit 修饰符 你如何实现同样的目标TextEditor onSubmit 似乎不起作用 您可以使用 onchange 作为绑定变量Text
  • 从 C# 连接和使用 sqlite 数据库的最佳方式是什么

    我之前在 C 中通过包含 sqlite h 完成了此操作 但是在 C 中是否有类似的简单方法 我和布鲁斯在一起 我在用http system data sqlite org http system data sqlite org 也取得了巨
  • 从 Spark 写入时避免丢失分区数据的数据类型

    我有一个如下所示的数据框 itemName itemCategory Name1 C0 Name2 C1 Name3 C0 我想将此数据框保存为分区镶木地板文件 df write mode overwrite partitionBy ite
  • Azure Functions 主机密钥自动重置

    我们有一个托管在 Azure 上的函数应用程序 其中包含多个函数 Function 应用程序有一个通用的主机密钥 我们最近遇到了主机密钥自动重置 删除的问题 因此 调用这些 Api 的应用程序会出错并且不会执行 我没有找到任何有关此问题以及
  • HTML5 将 png 缓冲区加载到画布中(用于流式传输)

    通过 websocket 我检索 PNG 格式的图像的二进制缓冲区 类似的东西 http blog nihilogic dk 2008 05 compression using canvas and png html 我想将此 PNG 缓冲
  • 在 Ant Design React 框架中将表列标题转置(旋转)到行

    我正在尝试使用 Ant Design React UI 框架创建一个表 其中行设置表标题而不是列 换句话说 我正在尝试转置默认表 默认情况下 使用该框架的表格如下所示 First Name Last Name Date of Birth A
  • Java、代码生成和持久性框架

    有没有 Java 代码生成持久性框架 是 数据库优先 而不是对象模型优先吗 我知道这在 Java 世界中可能是异端邪说 我只是想知道是否存在这样的框架 现在我更像是一个 NET 人了 因此 在 NET 端 我们想到了 NET Tiers 或
  • AngularJS - 绑定/监视返回承诺的函数

    我已经发布an issue https github com angular angular js issues 3503在 AngularJS github 上 但它似乎没有得到太多关注 而且我无法自己修复它 因为这是一个相当低级的问题
  • 如何自定义 Cerberus 的错误消息?

    我想本地化 Cerberus 返回的错误消息 例如我想实现以下目标 gt gt gt validator schema animal forbidden Einhorn gt gt gt validator animal Einhorn F
  • 检查 Zip 文件是否受密码保护

    我正在使用 PowerShell 提取多个 ZIP 文件 其中一些文件受密码保护 要求是跳过受密码保护的文件 当此代码遇到受密码保护的文件时 它会显示一个输入密码的框 有什么方法可以在解压 ZIP 文件之前检查它是否受密码保护吗 我试过点网
  • 具有多个日期条件的限制方法过滤器

    我正在尝试使用 Excel VBA 过滤掉我的 Outlook 邮件收件箱 然后在满足条件时最终发送电子邮件 完整的条件是 如果 Outlook 收件箱包含日期范围内 过去 7 天 且来自发件人 动态发件人电子邮件 的主题 我已经完成了su
  • 使用meteor js将url中的objectId与mongodb中的objectId进行匹配

    我是流星js新手 我从 url 获取了 id 但无法将其与 mongodb 中的 id 匹配 有什么可以帮助我的吗 Router map function this route post template viewpost path pos
  • 在应用程序中启动 Google 云端硬盘共享对话框。 APP_ID 值应该是多少?

    我正在跟进本文 https developers google com drive manage sharing launching the google drive sharing dialog in your app 尝试在网络应用程序
  • ASP.NET Core Angular 模板:app.module.client 与 app.module.server

    Microsoft 提供了一个很棒的模板 用于在 ASP NET Core 中开发 Angular 不是 AngularJS 如他们的文章中所述 使用 JavaScriptServices 在 ASP NET Core 上构建单页应用程序
  • 在哪里使用 wdio testrunner 在 WebdriverIO 中添加自定义命令?

    我正在使用网络驱动程序IO及其带有 mocha 和 chai 的 wdio testrunner 我想构建一些自定义命令 但在这种情况下 在哪里以及如何添加自定义命令的最佳方法是 保存自定义命令的最佳位置是在您的 wdio 配置文件中 be
  • C++ 十进制算术库

    我对向 Visual Studio 2013 添加附加库以及处理某些事物 例如金钱 时浮点数和双精度数通常不够准确的想法相当陌生 我最初认为 BOOST Multi precision cpp dec float 可以解决这个问题 但当我测