除法时的小数舍入误差 (C#)

2024-06-29

我基本上有四个数字(比如 100、200、300、400),我需要计算概率为 100/(100+200+300+400)、200/(100+200+300+400),等等在。

当我使用小数数据类型来存储这些概率时,由于舍入问题,它们不会达到 1。在不使概率太不准确的情况下解决这个问题的最佳方法是什么?基本上我多次进行这种计算,所以我不想将所有除法都更改为 Math.Round 的东西。 :|


解决方案很简单:如果这样做时会感到疼痛,那就不要这样做.

如果你有rational概率,即整数之比的概率,并且您希望它们恰好相加为 1,那么首先不要将它们转换为十进制或双精度。使用任意精度有理数类型来表示任意精度有理数。

Microsoft Solver Foundation 中包含一个任意精度的有理类型;你可以下载并使用它。或者,您可以轻松地编写自己的代码,只需创建一个不可变的结构,该结构具有两个用于分子和分母的 BigInteger,然后编写所需运算符的实现。

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

除法时的小数舍入误差 (C#) 的相关文章

  • C 和 C++ 中的“**”是什么意思?

    当一个对象开头有两个星号时意味着什么 variable 在声明中 这意味着它是一个指向指针的指针 int x declare x as a pointer to a pointer to an int 使用它时 它会引用它两次 int x
  • Asp.Net Mvc 5 图像不显示

    我有相同的图像Content and Views文件夹 我正在尝试显示图像 如下所示 img src Content Images download png alt Content folder br br img src Views Ho
  • ~ C 中的运算符

    该程序的输出是 13 我从来没有完全理解 C 中的 运算符 为什么它给出 13 作为输出 如何将 运算符限制为数字的 4 位 include
  • Qt:将事件发布到 QThread 的正确方法?

    在我的 Qt 应用程序中 我有一个主线程和一个工作线程 工作线程子类QThread并通过处理事件customEvent 这是主线程发送要由工作线程处理的事件的正确方法吗 QThread myWorkerThread QApplication
  • 实体框架 - 将枚举的 ICollection 保存在数据库中

    我有一个具有 type 属性的类ICollection
  • WTL 子窗口事件处理

    我正在开发窗口应用程序 因为我在左侧和右侧有 2 个子窗口 我想分别处理两个窗口的输入事件 如何实现 My code class EditorWindow public DxWindow public CSplitterWindow m v
  • 以编程方式解析和编辑 C++ 源文件

    我想以编程方式解析和编辑 C 源文件 我需要更改 添加代码的某些部分 即函数 类块等 中的代码 我也 最好 能够得到评论 我想做的部分事情可以用下面的代码来解释 CPlusPlusSourceParser cp new CPlusPlusS
  • 使用自定义源增强 Iostreams zlib_error

    我正在尝试使用zlib decompressor通过一个解压缩数据istreambuf iterator 我找不到使用输入迭代器作为流的输入的内置方法 如果已经存在 请指出一种方法 所以我写了这个源代码 template
  • 为什么我们不能将新字符串分配给 char 数组,而是分配给指针?

    我试图将字符串重新分配给预初始化的数组 a 但我得到的只是一个错误 main char a Sunstroke char b Coldwave a Coldwave b Sunstroke printf n s s a b 错误 从类型 c
  • 从表达式创建动态 Linq select 子句

    假设我定义了以下变量 IQueryable
  • 如何将字典中从一个键到下一个键的所有值相加? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个字典 其中 DateTime Now Date 转换为字符串作为键 整数作为值 我需要以某种方式将从一个输入键到下一个键的所有
  • 如何对 bcmath 数字进行向上、向下和舍入?

    我需要模仿的确切功能ceil http php net manual en function ceil php floor http www php net manual en function floor php and round ht
  • C 中的 const 和指针

    将 const 与指针一起使用可能会导致指针对象无法通过使用相关指针取消引用来修改 但为什么我也不能修改指针不直接指向的内容呢 例如 int a 3 const int ptr a ptr 5 不会编译 但为什么 ptr 2 5 还编译不了
  • SQL:使用 1 个查询更新一行并返回列值

    我需要更新表中的一行 并从中获取列值 我可以这样做 UPDATE Items SET Clicks Clicks 1 WHERE Id Id SELECT Name FROM Items WHERE Id Id 这会生成 2 个对该表的计划
  • 如何搜索来自另一个页面模型的串联名称列表?

    我的项目中有多个模型 但在下面的屏幕中 大多数字段 属性都位于 SecurityLog 模型中 下面是我显示的官员串联列表 除了军官姓名之外 我的搜索和列标题排序功能正常 我很难合并官员姓名 因为该列表来自另一个页面模型 这是我的数据库架构
  • 实施黑名单的最有效方法

    我开发了一个 Ip 过滤器 并猜测我如何使用任何类型的 esque 数据结构开发一个非常高效且快速的黑名单过滤器 我想做的很简单 每个传入 传出连接我都必须检查被阻止的 IP 列表 IP是分散的 内存使用应该是线性的 不依赖于阻止列表的数量
  • 在 C# 中获取 Selenium RemoteWebDriver 的会话 ID

    我正在尝试获取在 SauceLabs 云上运行的测试的会话 ID 但我似乎无法访问它 我尝试过以下方法 Returns null var sessionId string RemoteWebDriver driver Capabilitie
  • 使用脚本取消设置 PDF 字体

    我正在使用 xhtml2pdf 库自动创建 PDF 几个月前我有过这个问题 https stackoverflow com questions 25203219 xhtml2pdf doesnt embed helvetica 库嵌入了我没
  • 画笔和钢笔使用指南

    制作 GDI 画笔和钢笔有多贵 我应该在添加所需的基础上创建它们并将它们包装在 using 中以便快速处理它们 还是应该创建一个类似于 System Drawing Brushes 类的静态类 IMO 它们足够高效 您通常不应该创建在多个方
  • HTTPS文件下载C#

    我需要下载隐藏在 HTTPS 连接后面的文件 我对下载安全网站后面的文件不熟悉 我尝试使用凭据来解决此问题 但无济于事 据我所知 您需要创建并使用证书来完成此操作 但我没有找到任何示例 任何帮助表示赞赏 这就是我现在所拥有的 WebClie

随机推荐

  • WPF MVVM后台打印数据绑定问题

    我正在使用 wpf mvvm 开发一个销售点应用程序 在交易生命周期的许多阶段 都会在后台打印收据 我已经使用其他示例在后台生成和打印收据 我正在后台打印一个 UserControl 一切看起来都很棒 然后 我为该控件创建了 ViewMod
  • 如何从Python列表中的CSV文件的单个单元格中写入单词集?

    dataList cyclone twister thunderstorm supercell wind weatherradar storm waterspout tropicalcyclone hurricane typhoon sno
  • 训练某些网络时,Keras(Tensorflow 后端)在 GPU 上比在 CPU 上慢

    我很难理解为什么 GPU 和 CPU 速度在小规模网络中相似 CPU 有时更快 而 GPU 在大规模网络中更快 问题底部的代码在 i7 6700k 上运行时间为 103 7 秒 但使用tensorflow gpu 时 代码运行时间为 29
  • 脚本不会从nodejs应用程序中的ejs文件运行

    我正在尝试使用nodejs express mysql和ejs让网页显示图表 但我显然不明白ejs javascript等是如何工作的 我需要运行一个脚本来设置图表 来自 Chart js 模块 但它不会输出任何类型的图表 我尝试过的 将
  • 使用 jQuery 将 Enter 的按下链接到按钮单击

    我在模态表单上有一些按钮 div class block footer align right div
  • 剥离 OLE 标头信息 (MS Access / SQL Server)

    我有一个 C 应用程序需要支持二进制数据库内容 图像等 当使用 MS Access 或 MS SQL Server 时 此数据被包装在 OLE 对象内 如何去除此 OLE 标头信息 请注意 我不能只查找特定标签的开头 因为内容可以是 png
  • Android Studio - 程序类型已存在:com.google.android.gms.internal.measurement.zzwp

    昨天 我的应用程序运行良好 今天 不知道为什么 重新打开Android Studio后 应用程序就无法编译了 显示的错误是 Program type already present com google android gms intern
  • 如何显示 javadoc 代码块中的泛型?

    我有一个 javadoc 代码块 我想在其中编写一个包含泛型的代码示例 如下所示 public interface SomeInterface
  • 保留部分桌面

    如何使用 Delphi 保留桌面的一侧 像 Vista 侧边栏那样的东西 你想要的叫做应用程序桌面工具栏 http msdn microsoft com en us library bb776821 28VS 85 29 aspx 您必须使
  • 如何定义类别实例的相等性?

    为了证明例如类别法则对于某种数据类型的某些操作 如何决定如何定义相等性 考虑使用以下类型来表示布尔表达式 data Exp ETrue EFalse EAnd Exp Exp deriving Eq 试图证明这一点是否可行Exp形成一个具有
  • 将 Tango 3D 点投影到屏幕 Google Project Tango

    Project Tango 提供了点云 如何获取点云中 3D 点的像素位置 以米为单位 我尝试使用投影矩阵 但得到的值非常小 0 5 1 3 等 而不是 1234 324 以像素为单位 我包含我尝试过的代码 Get the current
  • 抓取 Shopee API v4

    我有一个最终项目 其中我想要检索的数据是通过在shopee上抓取数据来获取的 但是当我在隐藏的API上抓取shopee时遇到问题 当我在Insomnia脚本上尝试时 脚本会运行 但是当我尝试时在本地或 google colab 脚本上 这是
  • 解析字符串:提取单词和短语 [JavaScript]

    我需要在以空格分隔的术语列表中支持确切的短语 用引号引起来 因此 用空格字符分割相应的字符串已经不够了 Example input foo bar lorem ipsum baz output foo bar lorem ipsum baz
  • 禁用 AWS Lambda 环境变量

    我目前正在使用 AWS Lambda 运行我无法控制的代码 因此 我想确保 Lambda 环境是沙盒的 并且无法访问敏感数据 概述了传递给 Lambda 函数的默认环境变量here http docs aws amazon com lamb
  • Laravel 错误“模型/模型名称的声明应与 Illuminate\Database\Eloquent\Model 兼容”

    我面临一个关于 Laravel 应用程序的奇怪问题 在我的生产服务器上更新作曲家后 我收到此错误 我的登录页面显示正常 当我输入凭据时 它显示此错误 无论凭据错误还是正确 它总是显示相同的错误 错误是 App Models User upd
  • VBA在选择范围内选择随机行

    我只是想在用户选择的范围内选择随机行 然而 有时程序会选择特定范围之外的随机行 请参阅下面的代码摘录 Dim PopulationSelect As Range Set PopulationSelect Application InputB
  • 从条件表中获取 WHERE 子句的条件

    我创建了以下简单的DataModel 我用以下数据填充了表格 1 桌子Customer INSERT INTO test customer CustomerName Country RegistrationDate VALUES Custo
  • Lighthouse 多个 URL

    我需要对一个网站进行全面审核 但我想知道是否有任何方法可以让 Lighthouse 做到这一点 我知道他们不支持完整的站点审核或多个 URL 但我发现可以使用 bash 脚本来完成 因此 我将不胜感激对此案的任何帮助 或者您可能会推荐任何灯
  • Swiper 8 和笑话

    Swiper 8和Jest 支持ESM 必须使用import来加载ES模块在此输入图像描述 https i stack imgur com e3bB4 png 在此输入图像描述 https i stack imgur com nUmhq p
  • 除法时的小数舍入误差 (C#)

    我基本上有四个数字 比如 100 200 300 400 我需要计算概率为 100 100 200 300 400 200 100 200 300 400 等等在 当我使用小数数据类型来存储这些概率时 由于舍入问题 它们不会达到 1 在不使