Как 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

Лучшая документация — исходники
https://msdn.microsoft.com/ru-ru/library/kfsatb94(v=vs.110).aspx
Ответ написан более трёх лет назад
kykyryky @kykyryky Автор вопроса
Видел эту страницу, но не разобрался.
Все чего добился, так это с помощью
string str = string.Format(«», x);
получил ответ с фиксированным числом знаков после запятой: «0.0000000100»

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

еще так
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 |