Перейти к содержимому

Как double преобразовать в string

  • автор:

Как string преобразовать в double java

Чтобы в Java преобразовать строку в тип double , можно воспользоваться методом parseDouble() класса Double :

var number = Double.parseDouble("10.34"); System.out.println(number); // => 10.34 

В случае, если строку невозможно преобразовать в число типа double , будет выброшено исключение NumberFormatException :

var number = Double.parseDouble("abc"); // Exception java.lang.NumberFormatException 

Перевод double в string с заданной точностью

Делает, то что мне нужно, но в итоге получается утечка. Задавать сразу размер массива символов нельзя, наверное, ведь вдруг ответ будет слишком большой и не влезет.

Отслеживать
4,725 4 4 золотых знака 28 28 серебряных знаков 53 53 бронзовых знака
задан 17 апр 2023 в 9:22
ChetNePolichaetsa ChetNePolichaetsa
35 4 4 бронзовых знака

Вы в самом деле боитесь, что потребуется строка больше, скажем, килобайта? (ну, чтоб с бешшшшеным запасом :)). А выделение памяти через ne по сравнению с выделением и удалением ее в стеке — весьма дорогостоящая операция.

17 апр 2023 в 11:48

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

У вас не утечка, а попытка обращения за пределы доступной памяти. Вы можете сначала определить необходимый размер массива символов с помощью функции snprintf, которая принимает вторым параметром размер массива. Вы можете указать его равным нулю — тогда функция ничего не запишет, но вернёт количество символов, которое требуется для записи (не включая \0 ). Так вы определите, какой размер массива вам нужен. После этого создаёте массив нужной длины и выполняете конвертацию.

void DoubleToString(std::string &answer_for_return, double answer) < int count = snprintf(nullptr, 0, "%.7lf", answer); if (count >0) < char *convertator = new char[count+1]; sprintf(convertator, "%.7lf", answer); answer_for_return = convertator; delete convertator; >> int main()

Отслеживать
ответ дан 17 апр 2023 в 9:43
4,725 4 4 золотых знака 28 28 серебряных знаков 53 53 бронзовых знака

Интересно, ТС реально планирует использовать «%.70000lf» , что боится использовать массив заранее заданного размера в стеке, что и куда быстрее, и проще.

17 апр 2023 в 11:42

Для преобразования double в string с заданной точностью можно воспользоваться библиотекой . Вот пример функции, которая это делает:

#include std::string doubleToString(double number, int precision)

В этой функции мы используем std::ostringstream для записи числа в строку с заданной точностью. Метод precision устанавливает количество знаков после запятой, а метод std::fixed говорит о том, что нужно выводить фиксированную точку. Функция str() возвращает полученную строку.

Вы можете использовать эту функцию следующим образом:

double value = 3.14159265359; std::string stringValue = doubleToString(value, 7); 

В этом примере мы конвертируем число value в строку с точностью до 7 знаков после запятой и сохраняем результат в stringValue .

Конечно, можно использовать sprintf для преобразования double в string . Вот пример функции:

#include std::string doubleToString(double number, int precision)

В этой функции мы используем sprintf , который записывает отформатированные данные в буфер символов buffer . Мы передаем точность как аргумент в метод sprintf и используем .* для динамического задания точности. Затем мы конвертируем буфер в объект std::string и возвращаем его.

Вы можете использовать эту функцию следующим образом:

double value = 3.14159265359; std::string stringValue = doubleToString(value, 7); 

В этом примере мы конвертируем число value в строку с точностью до 7 знаков после запятой и сохраняем результат в stringValue .

Как преобразовать число double в string, сохранив десятичный вид?

В итоге строке содержится «1E-8». Как сохранить формат числа и получить строку «0.00000001»?

  • Вопрос задан более трёх лет назад
  • 8701 просмотр

Комментировать

Решения вопроса 1

winordie

Лучшая документация — исходники

https://msdn.microsoft.com/ru-ru/library/kfsatb94(v=vs.110).aspx

Ответ написан более трёх лет назад

kykyryky @kykyryky Автор вопроса

Видел эту страницу, но не разобрался.
Все чего добился, так это с помощью
string str = string.Format(«», x);
получил ответ с фиксированным числом знаков после запятой: «0.0000000100»

winordie

как вариант
double x = 0.00000001;
string str = x.ToString(«0.###################»);

winordie

еще так
double x = 0.00000001;
string str = ((decimal)x).ToString();

Как double преобразовать в string

Регистрация: 17.04.2011

Сообщений: 8

Преобразование double в string

Всем, привет. Такой вопрос, как преобразовать double в string в консоле.
Например:
double a = -21.23
string s;
И сделав так:
s=ФУНКЦИЯ_ПРИОБРАЗОВАНИЯ(a);
И самое главное, при выводе на экран:
cout выводит именно -21.23 (т.е. и знак заметит и точку, и знаки после точки)

Misha-QWERTY
Посмотреть профиль
Найти ещё сообщения от Misha-QWERTY

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *