我是Java新手,我正在使用Processing来制作一些数据可视化。我在我的代码中遇到这个奇怪的错误,想知道是否有人可以帮助我。似乎Xspacing浮点数一直设置为Infinity,但是当我打印出表达式时,它被设置为正确的值被打印...
float Xspacing = (endX-(width*.04) - startX)/ values;
println((endX-(width*.04) - startX)/ values);
println(Xspacing);
结果是:
49.0
无穷大
任何帮助将不胜感激!
很抱歉,我很快写完了这篇文章并省略了一些非常必要的信息:
49.0应该是什么。除了值是整数之外,所有其他类型都是浮点数。 代码DOES编译,println构建到Processing,这是我正在使用的框架(正确的术语?)。它基本上是一个在Processing GUI中打印到控制台的函数。
Xspacing旨在成为我的类“Graph”的数据,但是当我在公共函数“drawBasic”中定义变量时,一切正常。现在我只是好奇......
使用System.out.println(0产生相同的结果。初始值或变量是:
float startX = 120.00001
float endX = 740.0
int values = 12
width是一个设置为800的整数(虽然不是显式的)
奇怪的是,在一个函数定义中,这个工作正常,只有当我尝试在类中定义它才能正常工作时...
答案 0 :(得分:1)
您的代码可能不是那样的,因为数字* .04会创建一个double,这意味着您需要将表达式转换为float。
要编译代码,必须是
float Xspacing = (float)((endX-(width*.04) - startX)/ values);
println((endX-(width*.04) - startX)/ values);
println(Xspacing);
现在,结果。如果你的代码有,例如:
System.out.println(3/0);
Java会给你一个java.lang.ArithmeticException:/ by zero
但是,如果你有
System.out.println(3f/0);
然后Java会给你“无限”。为什么? http://grouper.ieee.org/groups/754/
答案 1 :(得分:0)
试试这个:
float Xspacing = (endX-(width*.04) - startX)/ values;
println((float)((endX-(width*.04) - startX)/ values));
println(Xspacing);
答案 2 :(得分:0)
float Xspacing = (endX-(width*.04) - startX)/ values;
即使假设变量是浮点数,该行也不会编译,因为0.4双字面值。
'println'也不是一个独立的方法,所以你必须自己编写。
您的实际代码是什么?
答案 3 :(得分:-1)
你忘记了)
,你应该put System.out.println(xspacing);
你甚至可以输入syso
和ctrl spacebar
,它会为你打印出打印声明。