如何使用 fmod 并避免精度问题

2023-12-02

我将把这个问题归结为最简单的形式:

让我们从 [0 .. 5.0] 开始迭代,步长为 0.05 并打印出 'X' 每乘以 0.25。

for(double d=0.0; d<=5.0; d+=0.05) {
  if(fmod(d,0.25) is equal 0)
    print 'X';
}

这当然行不通,因为d将是 [0, 0.05000000001, 0.100000000002, ...] 导致fmod()失败。极端的例子是当d=1.999999999998 and fmod(d,0.25) = 1.

如何解决这个问题?Here is一个可编辑的在线示例。


我会通过不以这种方式使用浮点变量来解决这个问题:

for (int i = 0; i <= 500; i += 5) {
  double d = i / 100.0;  // in case you need to use it.
  if ((i % 25) == 0)
    print 'X';
}

它们通常会带来很多问题,因此值得付出额外的努力来避免它们。

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

如何使用 fmod 并避免精度问题 的相关文章

  • 如何从字符串中提取子字符串直到遇到第二个空格?

    我有一个像这样的字符串 o1 1232 5467 1232 5467 1232 5467 1232 5467 1232 5467 1232 5467 如何仅提取 o1 1232 5467 要提取的字符数并不总是相同 因此 我只想提取直到遇到
  • 无法继承形状

    为什么我不能使用继承 a 的类Shapes class http msdn microsoft com en us library ms604615 28v vs 90 29 我需要延长Rectangle具有一些方法的类 但我想以与使用相同
  • C# 中一次性对象克隆会导致内存泄漏吗?

    检查这个代码 class someclass IDisposable private Bitmap imageObject public void ImageCrop int X int Y int W int H imageObject
  • Selenium - C# - Webdriver - 无法找到元素

    在 C 中使用 selenium 我试图打开浏览器 导航到 Google 并找到文本搜索字段 我尝试下面的 IWebDriver driver new InternetExplorerDriver C driver Navigate GoT
  • 混合模型优先和代码优先

    我们使用模型优先方法创建了一个 Web 应用程序 一名新开发人员进入该项目 并使用代码优先方法 使用数据库文件 创建了一个新的自定义模型 这 这是代码第一个数据库上下文 namespace WVITDB DAL public class D
  • Android NDK 代码中的 SIGILL

    我在市场上有一个 NDK 应用程序 并获得了有关以下内容的本机崩溃报告 SIGILL信号 我使用 Google Breakpad 生成本机崩溃报告 以下是详细信息 我的应用程序是为armeabi v7a with霓虹灯支持 它在 NVIDI
  • 为什么这个 makefile 在“make clean”上执行目标

    这是我当前的 makefile CXX g CXXFLAGS Wall O3 LDFLAGS TARGET testcpp SRCS main cpp object cpp foo cpp OBJS SRCS cpp o DEPS SRCS
  • if constexpr 中的 not-constexpr 变量 – clang 与 GCC

    struct A constexpr operator bool const return true int main auto f auto v if constexpr v A a f a clang 6 接受该代码 GCC 8 拒绝它
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen
  • 让网络摄像头在 OpenCV 中工作

    我正在尝试让我的网络摄像头在 Windows 7 64 位中的 OpenCV 版本 2 2 中捕获视频 但是 我遇到了一些困难 OpenCV 附带的示例二进制文件都无法检测到我的网络摄像头 最近我发现这篇文章表明答案在于重新编译一个文件 o
  • 如何在多线程应用程序中安全地填充数据并 Refresh() DataGridView?

    我的应用程序有一个 DataGridView 对象和一个 MousePos 类型的列表 MousePos 是一个自定义类 它保存鼠标 X Y 坐标 类型为 Point 和该位置的运行计数 我有一个线程 System Timers Timer
  • SQLAPI++ 的免费替代品? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何免费 也许是开源 的替代品SQLAPI http www sqlapi com 这个库看起来
  • 读取依赖步行者输出

    I am having some problems using one of the Dlls in my application and I ran dependency walker on it i am not sure how to
  • 调用 .ToArray() 时出现 ArgumentException

    我有一个经常被清除的列表 代码完全是这样的 VisitorAgent toPersist List
  • 如何高效计算连续数的数字积?

    我正在尝试计算数字序列中每个数字的数字乘积 例如 21 22 23 98 99 将会 2 4 6 72 81 为了降低复杂性 我只会考虑 连续的数字 http simple wikipedia org wiki Consecutive in
  • 如何获取带有某个属性注释的所有属性?

    我刚刚从 Roslyn 开始 我想找到所有用属性名称 OneToOne 注释的属性 我启动了 SyntaxVisualizer 并能够获取对该节点的引用 但我想知道是否有更简单的方法来实现此目的 这就是我所拥有的 var prop docu
  • 如何组合两个 lambda [重复]

    这个问题在这里已经有答案了 可能的重复 在 C 中组合两个 lambda 表达式 https stackoverflow com questions 1717444 combining two lamba expressions in c
  • winform c# 中的弹出窗口

    我正在开发一个需要弹出窗口的项目 但问题是我还希望能够通过表单设计器在此弹出窗口中添加文本框等 所以基本上我有一个按钮 当您单击它时 它将打开我在表单设计器中设计的另一个窗口 我一直在谷歌搜索 但还没有找到我需要的东西 所以我希望你们能帮助
  • 如何在 C# 中获取 CMD/控制台编码

    我需要指定正确的代码页来使用 zip 库打包文件 正如我所见 我需要指定控制台编码 在我的例子中为 866 C Users User gt mode Status for device CON Lines 300 Columns 130 K
  • 如何为有时异步的操作创建和实现接口

    假设我有数百个类 它们使用 计算 方法实现公共接口 一些类将执行异步 例如读取文件 而实现相同接口的其他类将执行同步代码 例如将两个数字相加 为了维护和性能 对此进行编码的好方法是什么 到目前为止我读到的帖子总是建议将异步 等待方法冒泡给调

随机推荐

  • 自动将 LF 和 CR (EOL) 添加到多个 .csv 文件的末尾

    我有一堆 csv外部生成并定期发送给我的文件 它们各自包含一行文本和 31 个 列 然而 他们都没有任何形式的EOL 没有 LF 本身或与 CR 一起使用 因此当我尝试组合这些文件中的任何一个时 我会在同一行上获得更多列 而不是每个文件一行
  • Perforce 到 git 的迁移 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我需要将存储库从 perforce 迁移到 git 以及所有历史记录 我尝试在网络上搜索 但没有找到任何明确的文档详细提及每个步骤 我看到了一个名为 git p4 的实用程序 但
  • Android 版 Google 登录

    我尝试了谷歌开发人员文档并尝试登录我的应用程序 该代码是从 git 复制的 并添加了来自文档 并定义在登录活动 as Public class LoginActivity extends AppCompatActivity implemen
  • 当服务器发送的事件运行时,带有 session_start() 的页面不会加载

    我正在开发一个小项目来制作 1v1 聊天系统 我想做一个项目 我可以把Server Sent Events好好利用 它运行得很好 但最近我对代码进行了一些更改 以便总的来说聊天会更有效 当我运行事件源时 我遇到了一个奇怪的问题 当我尝试访问
  • 使用Glide无法刷新验证码图片

    我尝试使用 Glide 将验证码图像加载到 ImageView 中 第一次加载没问题 但是 当我将验证码图像重新加载到同一个 ImageView 中时 ImageView 不会刷新到新图像 有谁知道如何解决这个问题 String url h
  • 如何向 Amazon Alexa Skills Kit (ASK) 混合字符串和数字输入?

    我正在尝试创建一个 Amazon Alexa 技能套件来进行某种自动化 这需要接受由字符串和数字组成的语音输入 a test12fish 当我在 Alexa Skills Kit 中使用自定义插槽时 它不允许我键入带有数字的字符串 当我尝试
  • 如何创建极坐标等值线图

    Update 我已经在我的博客上完整地写了我发现的方法http blog rtwilson com having polar contour plots with matplotlib 你可能想先检查一下 我正在尝试在 matplotlib
  • 将对象数组转换为长数组时出现 ClassCastException

    当我尝试将对象数组转换为长数组时 出现此异常 线程 main 中的异常 java lang ClassCastException Ljava lang Object 无法投射到 Ljava lang Long 我的酒店房间地图中的钥匙很长
  • 如何使用 ViewPager 滑动 xml 布局

    我正在构建一个应用程序 我想在其中启用滑动功能 我想在单个活动中滑动 xml 布局 早些时候我尝试放置图像 它成功了 我创建了一个扩展 PagerAdapter 的 ImageAdapter 类 在 instantiateItem 中 我创
  • 用于相对导入的 python 包装

    首先 我很抱歉 我知道有很多关于相对导入的问题 但我只是没有找到解决方案 如果可能的话我想使用以下目录布局 myClass init py test demo py benchmark py specs py src init py myC
  • 写入文件需要针对大流量进行优化第 3 部分

    这个问题是前2部分的延续 任何有兴趣了解我来自哪里的人都可以参考第1部分和第2部分 但这不是必要的 写入文件需要针对大流量进行优化 写入文件需要针对大流量进行优化第 2 部分 现在我有一个工作片段 相关部分如下 public static
  • 限制登录尝试失败的次数

    我想限制失败的登录尝试 例如 如果特定用户尝试使用错误的用户名或密码登录 4 次 我应该第四次显示验证码 而不是阻止一段特定时间 并继续显示验证码 除非他提供有效的用户名和密码 用户成功登录后 登录尝试将重置为零 从安全角度来看 检查用户名
  • 如何让TextureView播放视频有圆角和气泡效果

    我成功地在Android上使用TextureView和MediaPlayer播放视频 我是这样做的 我用 SurfaceTexture 创建了一个 Surface public void onSurfaceTextureAvailable
  • 在 json 响应中排除具有默认值的枚举属性

    我有一个 api 响应模型 它具有枚举类型的属性 枚举属性仅在某些情况下才会填充 其余情况下它会获得默认值 0 输出 道具1 ABCD prop2 0 这是默认为零的枚举属性 我尝试使用自定义 jsonconverter 但这并不能真正解决
  • 如何将 XML 文档的树结构分解为所需的结构..?

    对我来说 编写 XSLT 代码以带来我想要的输出是一个巨大的挑战 这是我的XML输入 我正在测试
  • 静态编译Python解释器?

    我正在构建一个专用的嵌入式 Python 解释器 并且希望避免对动态库的依赖 因此我想使用静态库来编译解释器 例如libc a not libc so 我还想静态链接属于 Python 标准库的所有动态库 我知道这可以使用Freeze py
  • 设置 Git 用户名

    我按照以下说明设置 Git https git scm com book en v2 Getting Started First Time Git Setup 该文档指出从命令行运行以下命令 git config global user n
  • 使用 Java 读取受密码保护的 Excel 文件(.xlsx)

    我试过下面的代码 import org apache poi poifs crypt Decryptor import org apache poi poifs crypt EncryptionInfo import org apache
  • 四条带纹理失真

    我有一个GL QUAD STRIP 我正在纹理映射 四边形带自身向后折叠以形成 UV 球体 本质上 四边形带通常不是由矩形制成的 而是由梯形制成的 我遇到纹理失真问题 纹理坐标是正确的 例如 它们在应该的位置很好地排列 问题在于梯形面本身
  • 如何使用 fmod 并避免精度问题

    我将把这个问题归结为最简单的形式 让我们从 0 5 0 开始迭代 步长为 0 05 并打印出 X 每乘以 0 25 for double d 0 0 d lt 5 0 d 0 05 if fmod d 0 25 is equal 0 pri