除法和浮点数

2023-11-21

任何人都可以帮助我为什么 x2 打印零。 我想因为浮点表示 X1 被四舍五入,有没有办法保持进动。

long double x1, x2;
x1= 0.087912088; // Note: 360/4095 = 0.087912088
x2 = 360/4095;
printf("%Lf, %Lf \n",x1, x2);

Result:

x1 =0.087912
x2= 0.000000

问题是整数截断.. 你正在除两个整数 => 结果将是另一个整数,小数部分被丢弃。 (例如,当整数除法的实际结果为 3.9 时,截断将使其变为 3(即不舍入))。

在您的情况下,如果您将其更改为:

x2 = 360 / 4095.0;  /* one of the operands now has a decimal point */

你会得到

0.087912, 0.087912 

作为输出。

即,一旦之一或两者除法运算符的操作数/是 float/double,结果也会是(即,它将被“提升”为 float/double)。所以我本可以改变x2 to

x2 = 360.0 / 4095.0;

or

x2 = 360.0 / 4095;

并且会得到与上面相同的结果。

正如 @chris 所提到的,只是使用.也足够了。

关于您上面关于精度的问题:

你已经在使用长双打了..我认为在内部你不能改变任何东西,除非你使用一些特殊的库,但你当然可以显示更多的数字。例如。,

  printf("%Lf, %.20Lf \n",x1, x2); 

将产生

  0.087912, 0.08791208791208791895 

最后,正如 @edA-qa mort-ora-y 提醒我们的,您还可以cast某些类型的值,但这很重要when你做吧。一个简单的例子(请注意,这些值最终为float after任何情况下的分配v is a float):

float v = 0;
                     /* values shown are BEFORE assignment */
v = (5 / 2);         /* value is 2 due to integer truncation before assignment */
v = (float) (5 / 2); /* 2.0 as integer division occurs 1st, then cast to float */
v = (float) 5 / 2;   /* 2.5 since 5 becomes 5.0 through casting first. */
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

除法和浮点数 的相关文章

随机推荐

  • 引用可能比指针更有效吗?

    我想知道有时 取决于平台或编译器或代码中的上下文等 引用是否比指针更有效 引用可能比指针更有效吗 不 不必要 标准也没有这么说 大多数编译器通过使用指针来实现引用机制 添加了对 C 的引用以支持运算符重载而不是为了效率
  • 为什么我必须使用[ProtoIninclude]?

    我读过很多关于 protobuf net 继承功能的问题 我只是想知道是否可以像使用 ProtoContract ProtoMember 一样使用 DataContract DataMember 为什么我不能使用 KnowType 而不是使
  • 意外的观察:数组的 var_dump() 正在标记引用的元素...从什么时候开始?

    我刚刚对数组运行了一些简单的调试测试 并注意到当我对数组执行 var dump 时 输出会标记数组中由另一个变量引用的任何元素 作为一个简单的实验 我运行了以下代码 array range 1 4 var dump array echo b
  • UItableView 在滚动时加载数据

    在我的应用程序中 我从网络服务获取数据 并且必须在 UITableView 中显示它 但这里的条件是我最初只能显示 10 条记录 然后一旦用户向下滚动我就必须加载更多记录 我尝试搜索它但没有得到任何有用的答案 我同意我将使用 void ta
  • 直接索引 numpy 数组的时间复杂度是多少

    我假设当有一个 numpy 数组时 比方说 gt gt gt gt nArray array 23425 521331 40625 23465 521246 03125 23505 528602 8125 23545 531934 75 2
  • 为什么 print 函数返回 None?

    为什么外层print在此代码中显示None gt gt gt a print print Python Python None gt gt gt print type a
  • 在 iPhone SDK 中创建自定义活动指示器?

    我还没有找到任何使用自定义活动指示器的应用程序 将是老式的动画 GIF 来代替 Apple 提供的旋转轮 是否有工具可以做到这一点 或子类 UIActivityIndi catorView 开发人员是否滚动自己的 UIView 或者这是否违
  • 具有代码完成功能的最小 PHP IDE? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 有很多小型编辑器 例如 Notepad vim 和 SciTE 但它们一次只能处理一个文件 换句话说 他们不知道代码库的整个范围 另一方面 我见过的
  • 使用 fputcsv 从多维数组创建 CSV

    我正在尝试将多维数组放入 csv 文件中 数组中的数据是这样的 Array 0 gt Array product id gt 1111 name gt Alcatel One Touch Idol 2 keyword gt alcatel
  • C++11 的 std::string 的底层表示形式是否保证具有终止空字符? [复制]

    这个问题在这里已经有答案了 首先摘录一些标准 规格string operator const reference 运算符 size type pos const 引用运算符 size type pos Requires pos Return
  • time.time() 无法在 Cython 中运行 while 循环预定时间

    我有一个 Python 模块 其中包含一个 while 循环 该循环应该运行固定的时间 我通过向 time time 的输出添加一个常量并运行直到 time time 大于该变量来完成此操作 这没有出现任何问题 但同样的事情在 Cython
  • 如何使用相机测量物体的高度、宽度和距离? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我引用了很多链接 但我仍然无法从中得到任何可以开始我的开发的信息 我想用相机测量图像的高
  • 使用预处理器将 JSON 作为字符串嵌入到 C++ 代码中

    我在 Chromium 项目中看到了 C 和 JSON 代码的混合 例如在这个文件中 配置 software rendering list json cc 这个宏有魔力吗 define LONG STRING CONST VA ARGS 它
  • add 和 iadd 之间的区别?

    我不明白 iadd imul 等就地运算符的用途 许多操作都有 就地 版本 以下功能 为就地运算符提供比通常更原始的访问 语法确实如此 例如 语句 x y 相当于 x 运算符 iadd x y 另一种表达方式是 z operator iad
  • 使用 Tensorflow 进行多任务深度学习

    有人尝试过使用 TensorFlow 进行多任务深度学习吗 也就是说 共享底层而不共享顶层 一个带有简单说明的例子会有很大帮助 有一个类似的问题here 答案使用了keras 只使用张量流时也是类似的 这个想法是这样的 我们可以定义网络的多
  • 为什么 powershell 控制台错误地调整了我的 GUI 表单的大小?

    我想在 1920 x 1080 像素的 Windows 11 屏幕上打开特定尺寸的 powershell GUI 表单 设置中的系统缩放比例设置为 125 这不可能是一个不寻常的配置 作为测试 我尝试打开一个大小为屏幕四分之一的窗体 如下所
  • Pandas Dataframe 日期时间切片与索引与多索引

    使用单个索引数据框 我可以执行以下操作 df2 DataFrame data data 1 2 3 index Index dt 2016 1 1 dt 2016 1 2 dt 2016 2 1 gt gt gt df2 2016 01 2
  • CLGeocoder 仅返回一个地标

    我在 CLGeocoder 上遇到问题 当我打电话时geocodeAddressString withCompletionHandler尽管知道输入的字符串应该返回多个值 但我只得到一个结果 类参考甚至指出 在前向地理编码请求的情况下 如果
  • 添加 runat="server" 会更改布局的行为

    我有一个带有一些控件 用户控件等的页面 当我从普通更改 div 时 div to a div 布局完全改变 这是为什么 我该如何预防 我正在使用 2 0 NET 框架 是因为 NET 改变了我的 id 这显然是我不想要的吗 如果您在 CSS
  • 除法和浮点数

    任何人都可以帮助我为什么 x2 打印零 我想因为浮点表示 X1 被四舍五入 有没有办法保持进动 long double x1 x2 x1 0 087912088 Note 360 4095 0 087912088 x2 360 4095 p