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