float을 char[]로...ㅡ.ㅡ;

soylove의 이미지

float을 char[]데이터로 바꾸는 방법 없을까요?
스트링을 float로 바꾸는건 있으면서 왜 반대는 없을까요...ㅜ.ㅜ

0.01같은것을
char[0] = 0
char[1] = .
char[2] = 0
char[3] = 1
이런 식으로 바꾸고 싶습니다...
도움좀 주세용

eminency의 이미지

sprintf를 쓰시면 됩니다...

float f =0.213;
char c[10];

sprintf(c,"%f",f);

노루가 사냥꾼의 손에서 벗어나는 것 같이, 새가 그물치는 자의 손에서 벗어나는 것 같이 스스로 구원하라 -잠언 6:5

cppig1995의 이미지

snprintf를 쓰시면 됩니다.

float f =0.213; 
char c[10]; 

snprintf(c, 10, "%f",f); // 제가 기억이 확실하진 않지만...

뱀다리. ISO/IEC 9899:1999 에 의해 // 도 C 주석입니다.

Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.

케인의 이미지

이 부분이 바로 표준 C 라이브러리의 맹점입니다. -_-;

위에서 소개한 대로 간단하게 snprintf를 쓰는 것도 방법입니다만,
Visual C++를 쓰신다면 비표준으로 _gcvt, _ecvt, _fcvt를 사용하실 수 있습니다. 리눅스나 유닉스에서도 비표준으로 dtoa 혹은 gdtoa 함수가 제공되기도 합니다. 한번 찾아보세요.

시스템에 없으면, 직접 dtoa 라이브러리를 받아서 이용하셔도 됩니다.

http://www.netlib.org/fp/index.html

위의 페이지에서 dtoa.c를 받으실 수 있습니다. 이 라이브러리는 libc 구현시에 리눅스나 여러 유닉스에서 printf 구현시에 사용하고 있는 것입니다. 즉, 안정성이 입증되었다고 할 수 있겠죠.

gdtoa 라이브러리도 있는데, 이것은 좀 더 확장된 것입니다. long double도 지원하죠.

soylove의 이미지

프로그래밍을 많이 안해보다보니 몰라서 못쓰는 함수가 많다는걸 뼈져리게 느끼네요.. 감사합니당