在Java中表示数字而不强制转换
Java中是否存在一种更自然的方式来表示这些数字而不使用强制转换在Java中表示数字而不强制转换,java,syntax,casting,byte,constants,Java,Syntax,Casting,Byte,Constants,Java中是否存在一种更自然的方式来表示这些数字而不使用强制转换 float tolerance = (float) 8.0e-7; byte[] data = new byte[]{(byte) 0xFF , (byte) 0x15}; 不在这些实例上使用强制转换根本不起作用,而且当您定义一个基本类型的常量并且必须使用强制转换来表示它时,它看起来很奇怪(就像您说Java自然不支持这些数据类型,这很荒谬) 我理解,对于浮点数,您可以这样表示: float tolerance = 0.00000
float tolerance = (float) 8.0e-7;
byte[] data = new byte[]{(byte) 0xFF , (byte) 0x15};
不在这些实例上使用强制转换根本不起作用,而且当您定义一个基本类型的常量并且必须使用强制转换来表示它时,它看起来很奇怪(就像您说Java自然不支持这些数据类型,这很荒谬)
我理解,对于浮点数,您可以这样表示:
float tolerance = 0.0000008f;
但这种形式几乎不可读。对于浮点值,您可以简单地在文本中表示您想要的是浮点值,而不是双精度值(这需要强制转换):
但是字节没有文本(请参见)。使用
f
时,您甚至可以删除.0
。啊,我明白了。谢谢但是他这样问;因此,我将暂时保留它。我希望有一个类似的字节解决方案,但感谢您的回答@GhostCat0x15
将在没有强制转换的情况下独立运行0xff
需要强制转换,因为字节是用java签名的,并被解释为-1
@conscells follow:因此-0x01
实际上可以在不使用强制转换替换(字节)0xff
的情况下工作。或者只是-1
。如果我不在,这两种方法都应该有效wrong@conscells事实上,我不知道有些情况下我不需要强制转换字节,这对我来说是新的信息。
float tolerance = 8.0e-7F;