当前位置: 首页 > 面试题库 >

如何获得架构支持的最小的下一个或上一个双精度值?

解鸿运
2023-03-14
问题内容

可以说我有一个double变量d。有没有一种方法可以获取CPU体系结构支持的下一个或上一个值。

举一个简单的例子,如果该值为10.1245125,并且体系结构的精度固定为7个小数位,则下一个值为10.1245126,而前一个值为10.1245124。

显然,在浮点体系结构上并不是那么简单。我将如何实现这一目标(在Java中)?


问题答案:

实际上,IEEE
754浮点体系结构使此过程变得容易:由于有了该标准,该函数随后在几乎所有支持该函数的语言中都被调用,并且这种统一性使我在对Java不太了解的情况下就可以编写您的问题的答案:

所述java.lang.Math.nextAfter(double start, double direction)返回相邻的第二个参数的方向上的第一个参数的浮点数。

请记住,-infinity和+ infinity是浮点值,这些值很方便给出方向(第二个参数)。不要写东西像常犯的错误Math.nextAfter(x, x+1),这只能只要1比更大ULP的x

编写以上代码的任何人都可能意味着Math.nextAfter(x, Double.POSITIVE_INFINITY),它保存加法并适用于的所有值x



 类似资料:
  • 问题内容: 我想在Java中将双数取整,以便将其转换为最接近的十分位数,如下所示。 我该怎么办实际上我的意图是在图表上设置Y轴,如果最大值为0.1,则num_间隔将设置为.01,如果最大值为0.3,则转换为1,然后将num_间隔设置为.1,依此类推。 问题答案: 尝试将其翻译成您的语言,我已经用Matlab编写了它,但是它应该很明显 当然,这只有在积极的情况下才有效。

  • 问题内容: 是否有一种方法(也许使用Google收藏夹)来获取a的最小值? 以传统方式,我将不得不根据值对地图进行排序,并选择第一个/最后一个。 问题答案: 您可以为此使用标准。 更新 :由于您也需要密钥,因此,我不会在Google API中看到任何方法,因为a 不是a 。该也不是真正有用的,因为你只知道在实际的结果 结束 迭代。 那么,最直接的解决方案是: (nullcheck在左侧)

  • 问题内容: 我试图确定双精度的最大精度是多少。在此链接的可接受答案的注释中,Java中的double保持精度 @PeterLawrey将max precision设置为15。 您如何确定呢? 问题答案: @PeterLawrey表示最大精度为15。 实际上,这根本不是他所说的。他说的是: 双精度有15个小数位 他错了。它们的精度为15个十进制 数字 。 任何数字中的小数位数由其对数10的对数给出。

  • 我试图确定double的最大精度是多少。在这个链接中接受的答案的注释中,Java中的Retain precision with double@PeterLawrey声明max precision In 15。 你如何确定这一点?

  • 问题内容: 我想使用双精度最多2个小数位。即,它将最多存储2个小数位,如果比较两个双精度值,则比较应仅基于前2个小数位。如何实现这样的事情?我的意思是存储,比较所有内容都将仅基于小数点后两位。其余位置可能不同,大于,小于,无所谓。 编辑 我的价值观不大。说从0到5000最大值。但是我必须乘以Cos A,Sin A很多次,其中A的值在程序过程中不断变化。 编辑 在我的程序中,汽车以特定速度(例如12

  • 问题内容: 说我有 ID的* 记录 * 我希望能够通过下一个/上一个链接导航到另一个。 问题是,我不知道 如何获取具有最近的较高ID的记录 。 因此,当我有一个 ID为ID 的记录时,我需要能够提取下一个现有记录,即为。 该查询可能看起来像 如何获取下一个/上一个记录而不获取整个结果集并手动迭代? 我正在使用MySQL 5。 问题答案: 下一个: 以前的: