C ++의 다차원 배열에서 올바른 부동 소수점 값을 검색 할 수 없습니다.

기즈모

나는 C ++ 스크립트를 작성하고 있는데 몇 가지 큰 문제가 발생했습니다.

다음과 같이 값이있는 float 배열을 정의했습니다 (이것은 매우 짧은 배열이고 실제 배열은 100k 요소입니다).

float gRandomPlayerSpawns[4][3] = {
    {2194.7808,1024.5272,79.5547},
    {2099.8562,1158.2679,11.6484},
    {1953.1841,1342.9954,15.3746},
    {2000.6274,1519.7140,17.0625}
};

이제 다음 코드를 실행할 때 :

void SetPlayerRandomSpawn(int playerid)
{
    int rnd = rand() % (sizeof(gRandomPlayerSpawns));
    ServerLog::Print(playerid,-1,Functions::string_format(
    "Setting position to: %f %f %f",
    gRandomPlayerSpawns[rnd][0], gRandomPlayerSpawns[rnd][1], gRandomPlayerSpawns[rnd][2]).c_str());
    SetPlayerPos(playerid, gRandomPlayerSpawns[rnd][0], gRandomPlayerSpawns[rnd][1], gRandomPlayerSpawns[rnd][2]); // Warp the player
    SetPlayerFacingAngle(playerid, 45.0);
}

배열에있는 어떤 값도 얻지 못합니다. 항상 이상한 값, 또는 0,0,0 또는 다음과 같은 것 :

Setting position to: 283969270356831250000000000000.000000 18523600588218255000000000000.000000 72697250258806125000000000000000.000000

또는 #INF : 00000 / 무한대 등 ..

또한 위에 게시 한 배열을 사용하고 f각 숫자 끝에 추가 했지만 도움이되지 않았습니다. 여전히 정의되지 않은 (?) 동작이 나타납니다. 내가 뭘 잘못하고 있습니까?

Borgleader
int rnd = rand() % (sizeof(gRandomPlayerSpawns));

이 줄은 잘못되었습니다. 이 배열에 sizeof를 적용하면 4 * 3 * sizeof (float)가 (내 컴퓨터에서) 48이됩니다. float는 4 바이트의 메모리를 사용하기 때문입니다. sizeof (float)로 나눈 경우에도 [0, 4 [] 범위를 예상하는 다음 계산에 대해 범위를 벗어난 12를 얻을 수 있습니다.

대체 접근 방식을 제안 할 수있는 경우 :

    struct PlayerSpawn {
        float x, y, z;
    };

    // There may be a slighting cleaner way of doing this.
    std::vector<PlayerSpawn> spawnsLocations;
    {
        PlayerSpawn spawns[4] = { {2194.7808,1024.5272,79.5547},
            {2099.8562,1158.2679,11.6484},
            {1953.1841,1342.9954,15.3746},
            {2000.6274,1519.7140,17.0625}
        };
        std::copy(&spawns[0], &spawns[4], std::vector<PlayerSpawn>::emplace_back);
    }   // The static array will go out of scope here, it's somewhat of a needless optimization though
    int rand = 0 % spawnsLocations.size();  // call rand here instead of 0, size of the vector should be 4 here

그러나 실제로 push_back을 사용하여 벡터에 값을 직접 추가하거나 또는 특정 크기 (예 : 4)로 배열을 초기화 한 다음 값을 각 인덱스 (0에서 3)에 할당 할 수 있습니다. 그것은 당신에게 달려 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Ruby on Rails 앱에서 올바른 대상 값을 검색 할 수 없습니다.

분류에서Dev

C의 한 줄에 문자열과 부동 소수점을 입력으로 사용할 수 없습니다.

분류에서Dev

Django의 ManyToManyField에서 값을 검색 할 수 없습니다.

분류에서Dev

자바 스크립트의 입력 상자에서 부동 소수점을 추가 할 수 없습니다.

분류에서Dev

삽입 문에서 다른 테이블의 열 값을 검색 할 수 없습니다.

분류에서Dev

생성자의 클래스 멤버에 적절한 부동 소수점 값을 할당 할 수 없습니다.

분류에서Dev

-1.00의 부동 소수점 값을 반환 할 수 없습니다.

분류에서Dev

cfc에서 날짜 배열을 검색 할 수 없습니다.

분류에서Dev

PHP :: 배열 내의 모든 값을 검색 할 수 없습니다.

분류에서Dev

C는 mongodb BSON 배열을 검색 할 수 없습니다.

분류에서Dev

C ++에서 다차원 char 배열의 값을 변경할 수없는 이유는 무엇입니까?

분류에서Dev

파이썬에서 dict에 대한 올바른 출력을 검색 할 수 없습니다.

분류에서Dev

루프에서 루프 외부의 배열로 푸시 할 값을 가져올 수 없습니다.

분류에서Dev

SQL Server의 다른 열 조건에 따라 열에서 고유 한 행을 검색 할 수 없습니다.

분류에서Dev

다른 확장에서 SharedPreferences 값을 검색 할 수 없습니다.

분류에서Dev

배열 값을 검색 할 수 없습니다.

분류에서Dev

다차원 배열에서 JavaScript 요소의 색상 속성을 변경할 수 있습니까?

분류에서Dev

Php에서 배열의 값을 에코 할 수 없습니다.

분류에서Dev

2 차원 배열의 .len을 사용할 수 없습니다.

분류에서Dev

'1 차원 배열' '유형의 값을' '(으)로 변환 할 수 없습니다.

분류에서Dev

PHP는 다차원 배열에서 값을 가져올 수 없습니다.

분류에서Dev

다차원 배열에서 값을 가져올 수 없습니다.

분류에서Dev

Kubernetes에서 apiVersion을 가져올 수 없음 : 서버 API의 전체 목록을 검색 할 수 없습니다.

분류에서Dev

Groovy의 XMLHolder가 값을 검색 할 수 없습니다.

분류에서Dev

함수에서 채워진 배열을 검색 할 수 없습니다.

분류에서Dev

Spark Hive : DataFrame의 열을 검색 할 수 없습니다.

분류에서Dev

CheckedBoxList의 항목에서 올바른 값을 가져올 수 없습니다.

분류에서Dev

클래스에서 값을 검색 할 수 없습니다.

분류에서Dev

URL에서 $ _POST 값을 검색 할 수 없습니다.

Related 관련 기사

  1. 1

    Ruby on Rails 앱에서 올바른 대상 값을 검색 할 수 없습니다.

  2. 2

    C의 한 줄에 문자열과 부동 소수점을 입력으로 사용할 수 없습니다.

  3. 3

    Django의 ManyToManyField에서 값을 검색 할 수 없습니다.

  4. 4

    자바 스크립트의 입력 상자에서 부동 소수점을 추가 할 수 없습니다.

  5. 5

    삽입 문에서 다른 테이블의 열 값을 검색 할 수 없습니다.

  6. 6

    생성자의 클래스 멤버에 적절한 부동 소수점 값을 할당 할 수 없습니다.

  7. 7

    -1.00의 부동 소수점 값을 반환 할 수 없습니다.

  8. 8

    cfc에서 날짜 배열을 검색 할 수 없습니다.

  9. 9

    PHP :: 배열 내의 모든 값을 검색 할 수 없습니다.

  10. 10

    C는 mongodb BSON 배열을 검색 할 수 없습니다.

  11. 11

    C ++에서 다차원 char 배열의 값을 변경할 수없는 이유는 무엇입니까?

  12. 12

    파이썬에서 dict에 대한 올바른 출력을 검색 할 수 없습니다.

  13. 13

    루프에서 루프 외부의 배열로 푸시 할 값을 가져올 수 없습니다.

  14. 14

    SQL Server의 다른 열 조건에 따라 열에서 고유 한 행을 검색 할 수 없습니다.

  15. 15

    다른 확장에서 SharedPreferences 값을 검색 할 수 없습니다.

  16. 16

    배열 값을 검색 할 수 없습니다.

  17. 17

    다차원 배열에서 JavaScript 요소의 색상 속성을 변경할 수 있습니까?

  18. 18

    Php에서 배열의 값을 에코 할 수 없습니다.

  19. 19

    2 차원 배열의 .len을 사용할 수 없습니다.

  20. 20

    '1 차원 배열' '유형의 값을' '(으)로 변환 할 수 없습니다.

  21. 21

    PHP는 다차원 배열에서 값을 가져올 수 없습니다.

  22. 22

    다차원 배열에서 값을 가져올 수 없습니다.

  23. 23

    Kubernetes에서 apiVersion을 가져올 수 없음 : 서버 API의 전체 목록을 검색 할 수 없습니다.

  24. 24

    Groovy의 XMLHolder가 값을 검색 할 수 없습니다.

  25. 25

    함수에서 채워진 배열을 검색 할 수 없습니다.

  26. 26

    Spark Hive : DataFrame의 열을 검색 할 수 없습니다.

  27. 27

    CheckedBoxList의 항목에서 올바른 값을 가져올 수 없습니다.

  28. 28

    클래스에서 값을 검색 할 수 없습니다.

  29. 29

    URL에서 $ _POST 값을 검색 할 수 없습니다.

뜨겁다태그

보관