我从Facebook到地方的坐标,这些有时最多12位小数。将这些转换为int(* 1E6)时,由于它正在削弱一些数字,因此我的精确度会下降。
例如,双59.313732591172表示为int 59313732。
我如何保持准确性?在Android上有什么办法吗?使用GeoPoint类我似乎坚持使用int。
麦克
答案 0 :(得分:1)
int
只能保存整数,因此您可以看到您要求的行为。
59.313732591172 * 1E6 = 59313732.591172
(int)59313732.591172 = 59313732
如果您需要保留更多数字,请继续使用double,转换为long
而不是int
并乘以更大的数字(例如1E12)
这就是如何将浮点数转换为int / long以任何类型语言运行。在这里,它是一个Java功能,并没有特定于Android。
答案 1 :(得分:0)
int
对于某些数字来说太短(实际上,对于大多数数字而言),因为它只有32位。请改用long
。见here