2^32-1보다 큰 수를 int 및 float으로 출력하려면 어떻게해야합니까? (심지어 가능합니까?)2^32-1보다 큰 수를 int 및 float으로 출력하려면 어떻게해야합니까? (심지어 가능합니까?)
답변
어떻게 변수에 2^32-1보다 큰 수가 포함되어 있습니까? 짧은 대답 : 아마도 특정 데이터 구조와 다양한 기능 (오, 클래스?)을 처리 할 것입니다.
이 데이터 구조가 주어지면 어떻게 인쇄합니까? BigInteger_Print(BigInteger*)
물론 :
실제로 2^32-1보다 큰 숫자 인쇄는 전적으로 해당 번호를 저장하는 방법에 따라 달라 지므로이 문제에 대한 정답은 없습니다. 당신에 대한 INT64 유형을 이야기하는 경우
, 가장 큰 float
이 시도 할 수 있습니다 (2^128-2^104) , 그것보다 작은 경우 printf()에 %f
(또는 %g
또는)을 사용하면됩니다.
int64
유형의 경우 JustJeff의 답변이 주목됩니다.
double
(%f
)의 범위는 거의 2^1024까지 확장되며, 이는 실제로 매우 큽니다. 인텔 하드웨어에서 long double
(%Lf
) 유형이 80 비트 부동 소수점에 해당하는 경우 해당 유형의 범위는 최대 2^16384가됩니다.
보다 큰 숫자가 필요한 경우 라이브러리 (자체 인쇄 루틴이있을 수 있음)를 사용하거나 자신의 표현을 굴려 자신의 인쇄 지원을 제공해야합니다.
더 많은 이론적으로 : 어딘지에 매우 매우 큰 숫자가 저장되어 있다고 가정 해보십시오. 그렇다면, 당신은 어떻게해서든지 그 수에 수학을 할 수 있다고 생각합니다. 그렇지 않으면 그것을 저장하는 것이 무의미 할 것입니다.
수학을 할 수 있다면, 십진수 (10)로 나누면됩니다. 나머지는 어딘가에 저장하십시오. 결과가 10보다 작을 때까지 반복하십시오. 10보다 작 으면 인쇄 한 다음 마지막부터 첫 번째까지 나머지를 인쇄하십시오. 끝.
노력없이 인쇄 할 수있는 최대 10의 힘 (32 비트, 1'000'000'000)으로 나누어 속도를 높일 수 있습니다.
편집 : 의사 코드 :
#include <stdio.h>
#include <math.h>
#include <math_with_very_very_big_num.h>
int main(int argc, char **argv) {
very_very_big_num bignum = someveryverybignum;
very_very_big_num quot;
int size = (int) floor(vvbn_log10(bignum)) + 1;
char *result = calloc(size, sizeof(char));
int i = 0;
do {
quot = vvbn_divide(bignum, 10);
result[i++] = (char) vvbn_remainder(bignum, 10) + '0';
bignum = quot;
} while (vvbn_greater(bignum, 9));
result[i] = (char) vvbn_to_i(bignum) + '0';
while(i >= 0)
printf("%c", result[i--]);
printf("\n");
}
(나는 veryverybignum 물건으로 번역보다 오래 사용하여이 쓴, 그것은 불행하게도 내가 그래서 만약 용서해주십시오,이 버전을 시도 할 수없는, 오래 함께 일 변환 오류 ...)
몇 가지 간단한 의사 코드는이 대답을 훌륭하게 만들지 만 어쨌든 +1 할 것이다. –
@Chris : 당신 말이 맞아요. 결정된. – giorgian
- 1. Java : int 및 double을 float으로 변환 하시겠습니까?
- 2. Perl - 이메일 주소 배열에있는 도메인의 수를 계산하고 출력하려면 어떻게해야합니까?
- 3. 스레드 내에서 예외를 출력하려면 어떻게해야합니까?
- 4. EditText에서 float으로 변하는 문자열
- 5. 255보다 큰 ExitCode가 가능합니까?
- 6. 임의로 큰 수를 계산하는 클래스?
- 7. Verilog 작업으로 레지스터에 값을 출력하려면 어떻게해야합니까?
- 8. ASPX 파일의 코드 뒤에 XML을 출력하려면 어떻게해야합니까?
- 9. Ruby 배열에서 지정된 형식으로 HTML을 출력하려면 어떻게해야합니까?
- 10. SQL - sql에 숫자가있는 문자열을 출력하려면 어떻게해야합니까?
- 11. .NET에서 이미지를 회전하여 PNG로 클라이언트에 출력하려면 어떻게해야합니까?
- 12. Ruby에서 맨 앞에 0을 출력하려면 어떻게해야합니까?
- 13. 루비에서 백 슬래시 앞에 슬래시를 출력하려면 어떻게해야합니까?
- 14. .Net : 클래스 속성을 XML 요소로 출력하려면 어떻게해야합니까?
- 15. 이 PHP 코드를 HTML로 출력하려면 어떻게해야합니까?
- 16. XUnit 콘솔로 NUnit 형식의 XML을 출력하려면 어떻게해야합니까?
- 17. mysql에서 줄리안 날짜 수로 DateTime을 출력하려면 어떻게해야합니까?
- 18. 0보다 큰 조건부 설정자가 가능합니까?
- 19. 16 진수를 float으로 변환
- 20. JAVA : 프로세스가 중지되었을 때 메서드를 호출하는 방법 (심지어 가능합니까?)
- 21. .htaccess의 ErrorDocument에서 잘못된 uri 매개 변수를 출력하려면 어떻게해야합니까?
- 22. 여러 관계형 MySQL 테이블에서 다차원 배열을 출력하려면 어떻게해야합니까?
- 23. 심지어 헤더가없는 오류 포함
- 24. 배열의 항목 수를 에코하려면 어떻게해야합니까?
- 25. int [] k, i 및 int k [], i;
- 26. 임의의 큰 수를 계승하여 모든 자릿수를 표시
- 27. SQLite (및 심지어 MysQL)에서 LIKE
- 28. 큰 wxCursor를 사용하려면 어떻게해야합니까?
- 29. C++에서 지울 수있는 텍스트를 콘솔로 출력하려면 어떻게해야합니까?
- 30. JTextComponent에서 소수 자리 뒤에 특정 자릿수 만 출력하려면 어떻게해야합니까?
'부호없는 정수'또는 2^31-1을 의미합니다. 정규 서명 된 'int'는 부호 비트 때문에 2^31-1 만 보유 할 수 있습니다. –