当前位置: 首页 > 知识库问答 >
问题:

多点存储(浮点、浮点)最好的方法是什么?

楚彦
2023-03-14
// It`s in the same file as my main class

class Point {
    public float x;
    public float y;
    
    public Point(float x, float y){
        this.x = x;
        this.y = y;
    }
}

或数组的数组:

float[] point = { 0.0f, 0.0f };
float[][] positions = { //Multiple Pointes here\\ };

共有1个答案

卫招
2023-03-14

就内存而言,最便宜的可能是使用大小为2N的一维数组(一旦Java获得值对象,这可能会改变),其中N是点数,其中x存储在2N,y存储在2N+1(0<=N

换句话说:

public class Points {

  private final float[] points;

  public Points(int size) {
    points = new float[2 * size];
  }

  public float getX(int index) {
    return points[2 * index];
  }

  public void setX(int index, float value) {
    points[2 * index] = value;
  }

  public float getY(int index) {
    return points[2 * index + 1];
  }

  public void setY(int index, float value) {
    points[2 * index + 1] = value;
  }
}

但是,如果需要单独处理点,那么使用point类更好。与使用二维数组(IIRC,为16字节,而浮点[2]为每点24字节)相比,它的开销略小,而且还提供了更好的抽象。

 类似资料:
  • 本文向大家介绍DSP中浮点转定点运算--浮点数的存储格式,包括了DSP中浮点转定点运算--浮点数的存储格式的使用技巧和注意事项,需要的朋友参考一下 二:浮点数的存储格式 2.1 IEEE floating point standard   上面我们说了,浮点数的小数点是不固定的,如果每个人都按照自己的爱好存储在电脑里,那不就乱套了吗?那么怎么在计算机中存储这种类型的数字呢?象这类古老的问题前人早都

  • 小数转 2 进制 方法:乘2取整 对十进制小数乘2得到的整数部分和小数部分,整数部分既是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分。如此不断重复,直到小数部分为0或达到精度要求为止。第一次所得到为最高位,最后一次得到为最低位。 如0.25的二进制: 0.25*2 = 0.5 取整是0, 0.5*2 =1.0 取整是1, 即0.25的二进制为 0.01(第一

  • 小数转 2 进制 方法:乘2取整 对十进制小数乘2得到的整数部分和小数部分,整数部分既是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分。如此不断重复,直到小数部分为0或达到精度要求为止。第一次所得到为最高位,最后一次得到为最低位。 如0.25的二进制: 0.25*2 = 0.5 取整是0, 0.5*2 =1.0 取整是1, 即0.25的二进制为 0.01(第一

  • 我编写了一个程序来演示Go中的浮点错误: 它打印: 这与用C编写的相同程序的行为相匹配(使用双代码类型) 但是,如果改用,程序就会陷入无限循环!如果将C程序修改为使用而不是,它将打印 为什么在使用时,Go程序的输出与C程序的输出不一样?

  • 论浮点数的存储原理:float浮点数与double浮点数的二进制存储原理–>阶码 浮点数转二进制 1.整数int类型和浮点数float类型都是占用4个字节,在计算机中有32位来进行表示,那为什么什么float的范围大于int? 答:因为两者的存储原理一样,虽然该同样是采用二进制的方式进行存储,但是整数类型(int)采用的是补码方式进行存储,但是浮点类型(float)采用的是阶码方式存储.由于阶码内

  • 因此,我有一个Javascript脚本,它在一个循环中将小的分数相加,它有可能将0.2加到0.1。然后,这个值被输入到另一个函数,但问题是,我需要0.3来精确输入,而不是0.3000000000000004。 什么是最简单的方法,以确保数字是正确和准确的。注意,它可能得到0.25+0.125等,被添加到简单的四舍五入到小数点1不会解决问题。 也有可能添加0.2+0.1000000000000000