Как я могу преобразовать двойной в строку в C ++ (без научной нотации)? - PullRequest
1 голос
/ 15 мая 2010

Как преобразовать double в строковое представление с плавающей запятой без научной записи в C ++. «Маленькие» выборки (эффективные числа могут быть любого размера, например 1.5E200 или 1e-200):

0.0000000000000000000000000000000000000000000000000000000023897356978234562

Спасибо.

Ответы [ 4 ]

9 голосов
/ 15 мая 2010
string doubleToStr(double d)
{
    stringstream ss;
    ss << fixed << setprecision(400) << d;
    return ss.str();

}
2 голосов
/ 15 мая 2010

Мне нужно получить небольшую графику здесь, вы получите травму. Преобразование числа с плавающей запятой в его десятичное представление должно быть сделано только когда-либо , чтобы помочь человеку взглянуть на него. После нескольких дней отформатированных чисел, этот человек собирается выследить вас и выбить из вас живое дерьмо.

2 голосов
/ 15 мая 2010

Похоже, вы можете сделать что-то вроде:

printf("%.999f", x);

С 1e-200 вы получите:

0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000999999999999999982100262399082759596054411789289747099615053598246562490947497936721972131756201804197021570455030299293624922494821832383011632557906373552085962098408476913455489082859886355453662043973282024133154067230851267975426859535195138290147135230492006495456852402792598006183692059967260467991913313132575212706757286711483332444086226553243549428744597633507858911915947470385365096849589274670732883477697029340657392052786430048605464484796240823622725900484894956399273269198602065443992614746093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000

Вы можете выбрать дальнейшую обработку выходных данных (например, исключить больше цифр точности, чем вам нужно).

0 голосов
/ 19 декабря 2014

Начиная с C ++ 11 просто используйте to_string(double val) из <string>.

...