Как double преобразовать в string
Перейти к содержимому

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

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

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

Решения вопроса 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();

Java: преобразование строки в число и наоборот

В некоторых случаях при программировании на Java нам нужно выполнить преобразование строки в число или числа в строку. Это бывает, если мы имеем величину определённого типа и желаем присвоить эту величину переменной другого типа. Преобразования типов в Java осуществляются разными способами, давайте рассмотрим наиболее популярные из них.

Как преобразовать строку в число в Java?

Речь идёт о преобразовании String to Number. Обратите внимание, что в наших примерах, с которыми будем работать, задействована конструкция try-catch. Это нужно нам для обработки ошибки в том случае, когда строка содержит другие символы, кроме чисел либо число, которое выходит за рамки диапазона предельно допустимых значений указанного типа. К примеру, строку «onlyotus» нельзя перевести в тип int либо в другой числовой тип, т. к. при компиляции мы получим ошибку. Для этого нам и нужна конструкция try-catch.

Преобразуем строку в число Java: String to byte

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

C помощью конструктора:

try < Byte b1 = new Byte("10"); System.out.println(b1); >catch (NumberFormatException e)

С помощью метода valueOf класса Byte:

String str1 = «141»; try < Byte b2 = Byte.valueOf(str1); System.out.println(b2); >catch (NumberFormatException e)

С помощью метода parseByte класса Byte:

byte b = 0; String str2 = «108»; try < b = Byte.parseByte(str2); System.out.println(b); >catch (NumberFormatException e)

А теперь давайте посмотрим, как выглядит перевод строки в массив байтов и обратно в Java:

String str3 = «20150»; byte[] b3 = str3.getBytes(); System.out.println(b3); //массив байтов переводится обратно в строку try < String s = new String(b3, "cp1251"); System.out.println(s); >catch (UnsupportedEncodingException e)

Преобразуем строку в число в Java: String to int

Здесь, в принципе, всё почти то же самое:

Используем конструктор:

try < Integer i1 = new Integer("10948"); System.out.println(i1); >catch (NumberFormatException e)

Используем метод valueOf класса Integer:

String str1 = «1261»; try < Integer i2 = Integer.valueOf(str1); System.out.println(i2); >catch (NumberFormatException e)

Применяем метод parseInt:

int i3 = 0; String str2 = «203955»; try < i3 = Integer.parseInt(str2); System.out.println(i3); >catch (NumberFormatException e)

Аналогично действуем и для других примитивных числовых типов данных в Java: short, long, float, double, меняя соответствующим образом названия классов и методов.

Как преобразовать число в строку в Java?

Теперь поговорим о преобразовании числа в строку (Number to String). Рассмотрим несколько вариантов:

1. Преобразование int to String в Java:
 
int i = 53; String str = Integer.toString(i); System.out.println(str);
2. Преобразование double to String в Java:
 
double i = 31.6e10; String str = Double.toString(i); System.out.println(str);
3. Преобразуем long to String в Java:
 
long i = 3422222; String str = Long.toString(i); System.out.println(str);
4. Преобразуем float to String в Java:
 
float i = 3.98f; String str = Float.toString(i); System.out.println(str);

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

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