Gau*_*hor 8 c java computer-science
请考虑以下条件:
if(a < 10)
Run Code Online (Sandbox Code Playgroud)
和
if(a <= 9)
Run Code Online (Sandbox Code Playgroud)
仅考虑int.
我知道这些条件具有相同的用途,加工差异可以忽略不计.然而,两者之间的处理差异是什么?
对于int并且long没有真正的区别,因为他们都处理整数.
这是因为9是低于10的下一个有效值.
但是float,double对于可以保持小于整数的值的其他类型,存在很大差异.
考虑一下这两个案例如何处理这些数字:
float a = 9.0
float b = 10.0
float c = 9.5
Run Code Online (Sandbox Code Playgroud)
编辑:
在第一种情况下if (val < 10):
a < 10 ... true
b < 10 ... false
c < 10 ... true <--- note this
Run Code Online (Sandbox Code Playgroud)
第二种情况if (val <= 9):
a <= 9 ... true
b <= 9 ... false
c <= 9 ... false <--- note this
Run Code Online (Sandbox Code Playgroud)
而这一切都是假设你最终获得"干净"的数字和舍入或部门的错误未出台,如9.99999999999并10.000000000001通过你可以执行任何计算.
比较浮点数时,您应该使用该类的内置比较方法.
a.compare(value) < 0 ... true if 'a' is smaller than 'value'
a.compare(value) > 0 ... true if 'a' is bigger than 'value'
a.compare(value) == 0 ... true if 'a' is equal to 'value'
Run Code Online (Sandbox Code Playgroud)
对于整数,程序的逻辑流程没有区别。
但不同的标准解决方案使用传统符号之一,并且由于这种非官方标准的坚持,它增加了使用“正确”符号的可读性,因为人们已经习惯了它。
性能方面,谈论编译为汇编器的语言,它们(在大多数体系结构上)都转换为一条直接处理器指令(条件跳转),使它们几乎相同。