加倍尽可能接近0?

时间:2014-01-28 15:50:59

标签: java floating-point double

我需要一个尽可能接近0的值。我需要能够除以这个值,但它应该是有效的。

Java是否提供了一种生成双精度的简单方法,只设置了最低有效位?或者我是否必须自己计算?


//编辑:一些背景信息,因为有人要求它。我知道我的灵魂并不是特别干净,但你在这里:

我正在写一个家庭作业的程序。它计算并联和串联电路中由多个电阻组成的电路的电阻。

这是一个为期两年的编程课程。我们的老师仍为我们设计课程,我们需要根据他的设计来实施。

并行电路涉及1/*resistance*的计算,因此我的程序禁止创建0欧姆的电阻。物理学告诉你,无论如何这都是不可能的(你在每种金属中只有一点阻力)。

但是,我们应该用来测试程序的示例电路包含一个0欧姆的电阻。它被放置在一个串行电路中,但是电阻器不知道它们在哪里(老师就是这样设计的),所以我不能改变我的程序,只允许在串联电路中使用0欧姆电阻的电阻。

两种解决方案:

  1. 在任何情况下都允许0欧姆电阻 - 如果除以0,那么,运气不好
  2. 将电阻器设置为0,但设置为可忽略的电阻。
  3. 两者都不是很好。第一个似乎对我不太好,第二个也没有,但我必须决定。

    这只是一个随机的选择,引发了这个问题。我不能解决它,所以切换到第一个不再是一个选项; - )

2 个答案:

答案 0 :(得分:15)

使用Double.MIN_VALUE

  

持有最小正非零值类型double,2 -1074 的常量。它等于十六进制浮点文字0x0.0000000000001P-1022,也等于Double.longBitsToDouble(0x1L)

答案 1 :(得分:0)

如果您希望除以“零”,您实际上只能使用Double.POSITIVE_INFINITY作为结果。