Arduino UNO에서 알고리즘을 실행하려고하면 일부 큰 숫자가있는 const 테이블이 필요하며 때로는 오버플로 값이 발생합니다. 이 숫자의 경우입니다 : 628331966747.0Arduino에 너무 큰 const UNO
좋아요, 이것은 큰 것이지만, 그 유형은 최대가 3.4028235e38 인 float (32 비트)입니다. 이론적으로는 효과가 있습니까?
내가 어떻게해야합니까? 해결책을 알고 있습니까?
EDIT는 :의 Arduino UNO에서 두 수레 동일한 유형 (32 비트) 여기서
오류로 이어지는 코드 exaclty 같습니다
float A;
void setup() {
A = 628331966747.0;
Serial.begin(9600);
}
void loop() {
Serial.println(A);
delay(1000);
}
그것이 인쇄 "OVF, OVF, ..., ovf "
무엇이 오류입니까? – GManNickG
FWIW'628331966747'은 부동 소수점 숫자가 저장되는 방식 때문에 부동 소수점으로 정확하게 저장할 수 없습니다. 가능한 32 비트 플로트에서 가장 가까운 표현은'628331970560'입니다. 그러나 더블은 잘 맞을 것이다. – Thebluefish
@GManNickG 내가 게시 한 코드 다음에 "ovf, ovf, ovf ..."라는 메시지가 나타납니다. 6.283319e011, 아니요? –