가능한 중복 : 나는 분수 형태로 소수점 형식을 변환하는 간단한 응용 프로그램을 만들려고 노력하고있어
Convert decimal to fraction in Objective-C?진수
. 십진수 값은 UISlider의 값으로 설정되지만 분수 형태로 분수를 얻는 방법은 무엇입니까? double 또는 float로 선언해야하며 앱에 분수 형태로 출력하도록 앱에 지시해야합니까?
가능한 중복 : 나는 분수 형태로 소수점 형식을 변환하는 간단한 응용 프로그램을 만들려고 노력하고있어
Convert decimal to fraction in Objective-C?진수
. 십진수 값은 UISlider의 값으로 설정되지만 분수 형태로 분수를 얻는 방법은 무엇입니까? double 또는 float로 선언해야하며 앱에 분수 형태로 출력하도록 앱에 지시해야합니까?
실수에서 소수점 근사값을 반환 하시겠습니까? 예 : 0.3333 ~ "1/3". 이 실험을 시도 할 수 : 콘솔에
#import <Foundation/Foundation.h>
char out[20];
static char *fractApprox(double r, long d) {
double atof();
int atoi();
void exit();
long m[2][2];
double x, startx;
long maxden;
long ai;
startx = x = r;
maxden = d;
/* initialize matrix */
m[0][0] = m[1][1] = 1;
m[0][1] = m[1][0] = 0;
/* loop finding terms until denom gets too big */
while (m[1][0] * (ai = (long)x) + m[1][1] <= maxden) {
long t;
t = m[0][0] * ai + m[0][1];
m[0][1] = m[0][0];
m[0][0] = t;
t = m[1][0] * ai + m[1][1];
m[1][1] = m[1][0];
m[1][0] = t;
if(x==(double)ai) break; // AF: division by zero
x = 1/(x - (double) ai);
if(x>(double)0x7FFFFFFF) break; // AF: representation failure
}
ai = (maxden - m[1][1])/m[1][0];
m[0][0] = m[0][0] * ai + m[0][1];
m[1][0] = m[1][0] * ai + m[1][1];
sprintf(out, "%ld/%ld",m[0][0],m[1][0]);
return out;
}
int main(int argc, const char * argv[])
{
@autoreleasepool {
printf("%s",fractApprox(0.342343, 999));
}
return 0;
}
인쇄를 329/961
. 당신은 분수를 소수로 변환 할 필요가 무엇 algorithm in C
에 대한 데이빗 엡스타인, UC 어바인에
크레딧 GCD입니다. 예를 들어 0.535