奇怪的Java错误-浮点设置为无穷大

奇怪的Java错误-浮点设置为无穷大,java,processing,Java,Processing,我是Java新手,我正在使用处理来实现一些数据可视化。我的代码中出现了这个奇怪的错误,我想知道是否有人能帮我解决这个问题。看起来Xspacing float一直被设置为无穷大,但是当我打印出表达式时,它被设置为正确的值被打印出来 float Xspacing = (endX-(width*.04) - startX)/ values; println((endX-(width*.04) - startX)/ values); println(Xspacing); 结果是

我是Java新手,我正在使用处理来实现一些数据可视化。我的代码中出现了这个奇怪的错误,我想知道是否有人能帮我解决这个问题。看起来Xspacing float一直被设置为无穷大,但是当我打印出表达式时,它被设置为正确的值被打印出来

  float Xspacing = (endX-(width*.04) - startX)/ values;  
  println((endX-(width*.04) - startX)/ values);  
  println(Xspacing);  
结果是:

49.0 无穷大

任何帮助都将不胜感激

对不起,我很快就写完了,省略了一些非常必要的信息:

49.0是我们应该做的。除了整数以外,所有其他类型都是浮点数。 代码进行编译,println被构建到处理中,哪个是框架正确的术语?我正在用的。它基本上是一个在处理GUI中打印到控制台的函数

xspace本来是用来作为类图的数据,但是当我在公共函数中定义变量时,一切都正常。现在我只是好奇

使用System.out.println0可以得到相同的结果。初始值或变量为:

浮点数startX=120.00001 浮动端x=740.0 整数值=12 宽度是设置为800的整数,但不是显式的

奇怪的是,在一个函数定义中,这样做很好,只有当我尝试在类中定义它时,它才不起作用…

试试这个:

float Xspacing = (endX-(width*.04) - startX)/ values;  
println((float)((endX-(width*.04) - startX)/ values));  
println(Xspacing);  
即使假设变量是浮点,由于0.4双精度文本,该行也不会编译

另外,“println”不是一个独立的方法,所以您必须编写自己的方法

您的实际代码是什么?

您忘记了a,应该将System.out.printlnxspace


仅供参考,您也可以只键入syso和ctrl空格键,它将为您打印print语句。

您的代码不能是这样的,因为数字*.04创建了一个双精度,这意味着您需要将表达式转换为浮点

对于要编译的代码,它必须是

float Xspacing = (float)((endX-(width*.04) - startX)/ values);  
println((endX-(width*.04) - startX)/ values);  
println(Xspacing);  
现在,看看结果。如果您的代码有,例如:

    System.out.println(3/0);
Java会给您一个Java.lang.arithmetricException:/by零

然而,如果你有

    System.out.println(3f/0);

那么Java将给你无限的空间。为什么?

试着放一个双人床。计算过程中是否有中间步骤会导致非常大的数值?因此49.0绝对是正确的值?如果你的问题包括endX、width、startX和values的值,那就好了,这样人们就可以验证结果。在@antsyawn的请求中添加精确的类型也会很有帮助。@Dan:你能不能也将输入值添加到你的公式中?另外,由于println是非标准的,你能试试System.out.println版本,看看它在这两种情况下会输出什么吗?@Dan:如果代码在公共函数中工作,但在你的类中不工作,你确定不会发生变量阴影或其他线程修改你的输入吗?如果尚未打印出失败的计算值,是否可以在计算前立即打印出这些值?
    System.out.println(3f/0);