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

Как конвертировать float/double в строку именно в том виде, в котором значение устновленно в переменной (без обрезки занков)?

Выводит «0.01234567», а надо «0.012345678900000». stringstream пробовал — результат тот же. std::to_string вообще 6 знаков пишет после точки. Точность заранее не известна, нужно выгружать в строку то, что есть, можно без нулей в конце. Как это сделать?

Отслеживать
задан 8 мая 2020 в 18:27
2,283 1 1 золотой знак 17 17 серебряных знаков 27 27 бронзовых знаков
А вы не задумывались, какова точность представления числа типом float ?
8 мая 2020 в 18:29
@Harry с double картина не меняется
8 мая 2020 в 18:31
Ну, вы вообще бредом занимаетесь — в пустой string что-то писать.
8 мая 2020 в 18:35

Ну, конкретное количество нулей справа — это вы никак не получите. У гугла есть библиотека, которая печататет числа с плавающей точкой за минимальное количество знаков, возможно это вам подойдет. (По идее, std::to_chars тоже должна так уметь, но пока ее завезли только в MSVC.)

8 мая 2020 в 18:58

1 ответ 1

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

float valf = 0.012345678900100; double vald = 0.012345678900100; printf("%.20f\n", valf); printf("%.20lf\n", vald); 
0.01234567910432815552 0.01234567890010000030 

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

char buf[30]; sprintf(buf,"%.20lf",val); string s = buf; 
ostringstream os; os  

Только не пишите в никуда, как в вашем примере.

Update

К "артефактам", упомянутым в комментарии. Это не артефакты. Представим, что у нас есть возможность записи только 4 бит. Как вы представите, например, 1/5 в виде суммы дробей вида 1/2 n ?

1/8 + 1/16 + 1/128. Стоп! Уже не можем представить 1/128 - точности не хватает. Так что число 0.20 будет иметь вид 0.1875.

Это - ограничение самого представления. Ну невозможно в общем случае представить дробное число с помощью конечной суммы дробей вида 1/2 n .

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

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

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

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

Решения вопроса 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 не будет опубликован. Обязательные поля помечены *