현재 고정밀 부동 소수점을 필요로하는 소프트웨어를 프로그래밍 중입니다. 때로는 double
보다 정확한 정밀도가 필요합니다. 고전적인 부동 소수점 숫자가 한정된 양의 정밀도를 달성 할 수있는 이유를 알고 있습니다.고정밀 부동 소수점에 문자열을 사용할 수 있습니까?
나는이 문제에 대해 생각하고 있었고 숫자를 표현하고 계산할 때 string
을 사용하는 아이디어가있었습니다. 우리 모두가 (단지 부동 소수점 포함) 초등학교에서 배운 것처럼
string number_one = "12.3459233547343432";
string number_two = "738.67632487523747384";
string sum = sum_strings(number_one, number_two);
cout << sum << endl; // 751.0222482299717...
기능 sum_strings
다음 추가를 수행 할 것입니다 :
빼기가 같은 방식으로 작동합니다. 곱셈과 나눗셈은 더 복잡 할 것이지만 역시 효과적입니다.
필자는 이론적으로 (문자열을 저장할 충분한 RAM으로) 필요한만큼 높은 정밀도를 얻을 수 있다고 생각합니다.
내 질문은 :
- 이 기술은 (~ 10 개 분수 자리에) 훨씬 느린 것입니까?
- 이미 사용되고 있으며이를 구현하는 라이브러리가 있습니까?
부동 소수점 에뮬레이션이라고하며 부동 소수점 계산은 일반적으로 원자 CPU 쉼표이므로 매우 느립니다. 에뮬레이션은 수십 개의 CPU 명령을 취할 수 있습니다. –
소수 자릿수 10 개가 아니라 유효 숫자 10 개를 의미한다고 가정하면 (그 정보는 실제로 질문과 관련이 없습니다), '이중'은 필요한 정보를 정확하게 저장하기에 충분합니다. 그렇다면 다시, 당신의 산문은 실제 예와 일치하지 않습니다. –
'3'은 '3'과 같지 않고 '2'는 '2'와 같지 않기 때문에 '3'+ '2'는 거의 '5' 내가 본 문자 인코딩 중. –