long double
이 int인지 확인하기 위해 for-loop
을 사용하고 있습니다. 나는 for 루프가 2와 final
^1/2 사이에 또 다른 long double
을 반복하도록 설정했다. Final
은 기본적으로 2에서 10 마이너스 1의 힘으로 설정 한 루프입니다. final
이 정수인지 확인합니다. 내 질문에 어떻게 정수만 final
값을 얻을 수 있습니까? 내 설명이 약간 혼란스러워서 여기 내 전체 루프 코드가 있습니다. BTW 나는이 숫자를 매우 크게 늘릴 계획이므로 long double을 사용하고 있습니다.double가 int 인 경우에만 같은 double을 반환합니까? Obj-C
for (long double ld = 1; ld<10; ld++) {
long double final = powl(2, ld) - 1;
//Would return e.g. 1, 3, 7, 15, 31, 63...etc.
for (long double pD = 2; pD <= powl(final, 0.5); pD++) {
//Create new long double
long double newFinal = final/pD;
//Check if new long double is int
long int intPart = (long int)newFinal;
long double newLong = newFinal - intPart;
if (newLong == 0) {
NSLog(@"Integer");
//Return only the final ints?
}
}
}
@nhgrif 종류가 있습니다. 숫자를 가져 와서 길게 캐스트하고 다시 두 번 캐스팅 한 다음 두 비트를 비교할 수 있어야합니다. 당신이 검사해야 할 유일한 다른 점은 long에서 "used"된 비트 수가 double의 가수의 크기보다 적다는 것입니다. –
죄송합니다. 'long double'을 사용하고 있으며 'long'과 'double'사이에 캐스팅하지 않습니다. 아마도 당신은'long long'으로 캐스팅 할 수 있을까요? –