【发布时间】:2014-08-08 10:23:08
【问题描述】:
我有这个生成浮点值(例如 0.37885)的正弦波,但我希望它们作为短裤。用 short 直接转换给我的值为 0。那么解决方案是什么?
谁能告诉我怎么做 - 理想情况下不损失精度 - 或者如果这是可能的,那么精度损失最小?
【问题讨论】:
-
float的大小通常为 4 个字节,short的大小通常为 2 个字节。在将 4 个字节的数据压缩成 2 个字节的数据时,您究竟希望如何避免精度损失? -
为了帮助理解你试图解决的问题,你能解释一下为什么你需要在 short 中存储一个浮点数吗?
-
另外,你打算如何将浮点值“转换”为非浮点值?
-
您需要决定将某个点用于最低位,或者像 FPU 通常那样编写一些代码来存储
float。 -
@BackSlash:这不是问题。如果您采用相同大小的整数(
int在大多数平台上都可以),那么数据类型就没有问题。例如,给定float f和int i,您可以使用i = *(int*)&f。
标签: java floating-point short