我有这个正弦波,它生成浮点值(例如0.37885),但我希望它们是短裤。直接用short强制转换的值为0。那么解决方案是什么?
谁能告诉我该怎么做-理想情况下不会损失精度-或如果可能的话,将精度损失降至最低?
public static short floatToShort(float x) {
if (x < Short.MIN_VALUE) {
return Short.MIN_VALUE;
}
if (x > Short.MAX_VALUE) {
return Short.MAX_VALUE;
}
return (short) Math.round(x);
}
您将失去小数部分:
float 4 byte floating-point
double 8 byte floating-point (normal)
short 2 byte integer
int 4 byte integer (normal)
long 8 byte integer
编辑:
也许您想知道如何将float的位(4个字节)保存为int(4个字节):(http://docs.oracle.com/javase/7/docs/api/java/lang/Float。 html#floatToRawIntBits(float))
float x = 0.1f;
int n = Float.floatToRawIntBits(x);
float y = Float.intBitsToFloat(n);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句