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

检查双重性是否永远安全?

安明亮
2023-03-14
问题内容

我有以下代码:

double x = 0;

{ ...do stuff ...}

if(x == 0){

}

一直有人告诉我,不要检查浮点数是否相等。检查是否等于零是否有所不同?


问题答案:

您不应该检查浮点数是否相等的原因是浮点数不够精确-
一些数字在存储中存在一些不准确性,例如那些延伸到尾数太远并且重复小数的数字(请注意,我在说关于在基数2中重复小数)。您可以将这种不精确性视为“四舍五入”。超出浮点数精度的数字将被截断,有效地四舍五入。

如果它没有改变,它将保持平等。但是,即使您稍作更改,也可能不应该使用等号,而应使用(x < 0.0001 && x > -.0001)

简而言之:只要您不是在很小的程度上使用x,就可以。



 类似资料:
  • 问题内容: 我想看看我从数据库读取的时间是否与用户提供的时间重叠。 我的数据库如下所示: 我的代码如下所示: 如果我故意输入两次重叠的时间,则不会回显错误。我究竟做错了什么? 问题答案: 当且仅当以下条件中的至少一个成立时,两个时间段P1和P2重叠: P1在P2的开始和结束之间开始() P2在P1的开始和结束之间开始() 这将捕获部分重叠的期间以及一个完全覆盖另一个期间的期间。如果两个周期重叠,则

  • 经过论坛上的大量研究,现在我知道没有办法找到双SIM卡手机中两个SIM卡的IMSI或SIM序列号(除了联系制造商)。现在我改变的问题是,我们能检测到手机有两个模拟人生吗?我相信只要有一些情报就可以检测到。我能想到的几个方法是: > 拨打USSD代码并跟踪IMEI号码的日志(我在印度尝试了*139#。它起作用了。)这将给我IMEI号码的SIM卡,我从其中拨打USSD代码。(据推测,这款手机遵循And

  • 这里有几个关于如何检查对象中是否存在属性的答案。 我一直在使用 但我想知道这和

  • 问题内容: 我偶然遇到了一篇文章,该文章最近讨论了Java中的双重检查锁定模式及其陷阱,现在我想知道我多年来使用的那种模式的变体是否会遇到任何问题。 我看过许多关于该主题的文章和文章,并了解了对部分构造的对象的引用所带来的潜在问题,据我所知,我认为我的实现不受这些问题的影响。以下模式是否有问题? 而且,如果没有,人们为什么不使用它?在围绕此问题进行的任何讨论中,我从未见过推荐它的方法。 问题答案:

  • 问题内容: 我确信这是一个非常明显的问题,并且确实有一个函数可以执行此操作,但是我似乎找不到它。在PHP中,我想尽可能有效地知道数组中是否有重复项。我不想像删除它们一样,并且我也不希望运行并将其与原始数组进行比较以查看它们是否相同,因为这似乎效率很低。就性能而言,“预期条件”是该阵列没有重复项。 我只想做类似的事情 我有没有想到的明显功能? 具有正确的标题,并且是一个非常相似的问题,但是,如果您实

  • 本文向大家介绍双重检查加锁单例 线程安全-Java版相关面试题,主要包含被问及双重检查加锁单例 线程安全-Java版时的应答技巧和注意事项,需要的朋友参考一下 双重检验加锁模式(double checked locking pattern),是一种使用同步块加锁的方法。程序员称其为双重检查锁,因为会有两次检查 ,一次是在同步块外,一次是在同步块内。为什么在同步块内还要再检验一次?因为可能会有多个线