Несколько поправок к некоторым сообщениям.
C НЕ поддерживает передачу по ссылке. Он ВСЕГДА проходит по значению. C ++ поддерживает передачу по ссылке, но не является по умолчанию и весьма опасен.
Не имеет значения, какое значение имеет значение Java: примитивный или адрес (примерно) объекта, он ВСЕГДА прошел мимо value.
Если объект Java «ведет себя» так, как он передается по ссылке, это свойство изменчивости и не имеет абсолютно никакого отношения к передающим механизмам.
Я не почему это так запутанно, возможно, потому, что так много «программистов» Java официально не обучены и, следовательно, не понимают, что происходит в памяти?
Используйте {n}. format ()
Например: '{: n}'. format (1234))
ds_x=[ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00,1.65349200e+05, 1.36897800e+05, 4.71784100e+05]
# For Numpy arrays use '.astype'
# Copy of the array 'ds_x', cast to a specified type 'float'.
# Note: Try type 'float32' OR 'float64' if the below fails to provide correct precision.
data_set = ds_x.astype(float)
for i in data_set:
print("{:.16f}".format(float(i)))
# Подробнее о лучшей точности можно узнать здесь
Выходные данные:
0,0000000000000000
0,0000000000000000
1,0000000000000000
165349.2000000000116415
1168887859999
471784.0999999999767169
Или вы можете использовать альтернативный способ:
"%.16f" % (float( 00,1.65349200e+05))
Второй вопрос, касающийся PyCharm. Возможно, вы захотите взглянуть на маркеры форматирования . Полная информация о переформатировании .
Обновление:
Вот обновленный пример кода с набором данных, который был предоставлен вы.
blockquote>import numpy as np ds = np.array([[ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 2.86637600e+04, 1.27056210e+05, 2.01126820e+05], [ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00, 1.44372410e+05, 1.18671850e+05, 3.83199620e+05]]) for data_x in iter(ds): print() for data_y in data_x: print("%.16f" % float(data_y))
вывод:
0.0000000000000000 1.0000000000000000 0.0000000000000000 28663.7599999999983993 127056.2100000000064028 201126.8200000000069849 0.0000000000000000 0.0000000000000000 1.0000000000000000 144372.4100000000034925 118671.8500000000058208 383199.6199999999953434
Об ошибке:
TypeError: только массивы размера 1 могут быть преобразованы в скаляры Python
blockquote>Это потому, что используемый вами набор данных представляет собой матрицу Python ИЛИ список из списка / двух массивов. Первый пример кода в этом посте использует один цикл, который работает с одним массивом; однако, поскольку вы используете больший набор данных, содержащий два массива в первом цикле, он пропустит весь массив, вызывая вывод вышеуказанной ошибки. Чтобы исправить это, я просто добавил второй цикл для перебора каждого значения для каждого массива.