Лучший отвечающий
powershell и числа

Вопрос
-
$c="0.00000004"
$c | out-file d:\1.txt
$a=get-content d:\1.txt
$c
4E-08
$a
4E-08
как сделать так, чтобы число не возводилось в степень, а всегда было вида "0.00000004"?
количество знаков после запятой,определяет переменная,например $b
- Изменено last_kpojl 10 февраля 2018 г. 19:06
10 февраля 2018 г. 14:12
Ответы
-
Числа всегда представлены в двоичном виде, а те или иные форматы возникают только при выводе чисел в виде строк, как на экран так и в файл. Одно и то же число можно вывести в разных форматах.
В данном случае из файла всегда считывается строка вне зависимости от формата. Если после считывания требуется число, то надо выполнять преобразование типа:
$c=0.00000004
$c | out-file d:\1.txt$s = get-content d:\1.txt
$a = [double]::Parse($s)
$a
4E-08
$a.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Double System.ValueType$a.ToString("F8")
0.00000004
$a.ToString("G")
4E-08
This posting is provided "AS IS" with no warranties, and confers no rights.
- Помечено в качестве ответа last_kpojl 10 февраля 2018 г. 21:43
10 февраля 2018 г. 19:06Модератор
Все ответы
-
$c = "0.00000004"
10 февраля 2018 г. 17:36 -
$c.ToString("F8") | out-file d:\1.txt
This posting is provided "AS IS" with no warranties, and confers no rights.
10 февраля 2018 г. 17:37Модератор -
$c.ToString("F8") | out-file d:\1.txt
This posting is provided "AS IS" with no warranties, and confers no rights.
$a.gettype() это String
- Изменено last_kpojl 10 февраля 2018 г. 18:31
10 февраля 2018 г. 18:23 -
Числа всегда представлены в двоичном виде, а те или иные форматы возникают только при выводе чисел в виде строк, как на экран так и в файл. Одно и то же число можно вывести в разных форматах.
В данном случае из файла всегда считывается строка вне зависимости от формата. Если после считывания требуется число, то надо выполнять преобразование типа:
$c=0.00000004
$c | out-file d:\1.txt$s = get-content d:\1.txt
$a = [double]::Parse($s)
$a
4E-08
$a.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Double System.ValueType$a.ToString("F8")
0.00000004
$a.ToString("G")
4E-08
This posting is provided "AS IS" with no warranties, and confers no rights.
- Помечено в качестве ответа last_kpojl 10 февраля 2018 г. 21:43
10 февраля 2018 г. 19:06Модератор