저는 double의 int 부분과 소수 부분을 얻으려고합니다. 이 내가이 구현 한 방법입니다 : 정수로 소수 부분을 얻을하려고 할 때 나는 FUNC 0.5에 전달to_string 함수가 0을 더합니다.
void func(double d)
{
int intpart, decpart;
intpart = d;
string szDec = to_string(d);
szDec = szDec.substr(szDec.find(".") + 1);
decpart = stoi(szDec);
m_iNom = intpart * decpart + 1;
m_iDenom = decpart;
}
문제가 발생합니다. 대신 5를 얻기의
는 to_String는 SUBSTR() 함수를 사용하는 경우 szDec이 = "0.500000000000000"
하고, szDec는 = "0.500000"이 나를 떠날 수 decpart = 500000 대신 5
의to_String 함수와 substr 함수가 문자열에 0을 추가하고이를 float로 변환하는 것을 어떻게 중지합니까?
그냥 [std :: modf] (http://en.cppreference.com/w/cpp/numeric/math/modf)를 사용하는 것이 무엇이 잘못 되었습니까? – Cubbi
@Cubbi 3.5라고 말하면 3은 5가 아니라 3이 필요합니다. 0.5 –
'3.1'이 있다면 어떨까요? 이 값을 double에 저장하면'3.100000000000000088817841970012523233890533447265625'가됩니다. '3'과'100000000000000088817841970012523233890533447265625' 또는'3'과'1'을 원합니까? 그리고 만약 당신이'3'과'1'을 원한다면, 당신은 그것들을 어떻게 계산하기를 원합니까? – Cubbi