Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/25: Рейтинг темы: голосов - 25, средняя оценка - 4.64
 Аватар для slavka_online
1 / 1 / 0
Регистрация: 06.11.2012
Сообщений: 102

Почему появляются лишние цифры в дроби?

06.09.2013, 22:18. Показов 5704. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
функция перевода числа в стандартный вид

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def stdvid (tmp):
 
    i=0 
 
    if int(tmp)!=0:
        while tmp>9:
            tmp/=10
            i+=1
        itog=str(tmp)+str("*10^")+str(i)
    elif int(tmp)==0:
        while int(tmp)==0:
            tmp*=10
            
            i-=1
        itog=str(tmp)+str("*10^")+str(i)
 
    return itog

почему то выдает лишние цифры, к примеру из 2345 получаем 0.23449999999998*10^3

а здесь вообще отказывается работать
Python
1
2
3
for i in range(new_arr.__len__()):
        
        print(stdvid(new_arr[i]))
ничего не происходит
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.09.2013, 22:18
Ответы с готовыми решениями:

Программа работает правильно, но при выводе появляются лишние цифры
Программа реализует метод Гаусса с выбором главного элемента по столбцу. Все работает верно, кроме одного. При выводе на экран выводятся...

Почему в строке появляются лишние символы?
Здравствуйте, пытаюсь написать ОС, но столкнулся с проблемой: Иногда, при нажатии enter возникают какие-то артефакты и в строку...

Появляются лишние цифры после запятой при считывании в переменную типа double
Считываю в переменную double pow число 2.56 и вместо нормальной записи в конец числа добаляеться единица scanf_s("%lf",...

12
 Аватар для Wolkodav
842 / 480 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
06.09.2013, 22:33
slavka_online, а python я так понимаю третий?
0
 Аватар для slavka_online
1 / 1 / 0
Регистрация: 06.11.2012
Сообщений: 102
06.09.2013, 22:37  [ТС]
Да, я только недавно стал его изучать из-за простоты и быстроты написания кода для быстрой практической деятельности
0
 Аватар для Wolkodav
842 / 480 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
06.09.2013, 22:45
slavka_online, по сути это у вас происходит округление до float, вот и ошибка, вам наверное необходимо целочисленное деление, используйте % вместо /, и вот 12 строка меня немного напрягает, что вы ей хотели сделать?

Добавлено через 50 секунд
Это не ошибка точнее, просто ну вот так получается при вычисление нецелых чисел. Не пугайтесь таких штук, бывает)

Добавлено через 1 минуту
slavka_online, про 12 строку, как я понял у вас там строка в tmp, а вы странный какой-то оператор для неё *=...

Добавлено через 30 секунд
И вообще, зачем вы к int приводите, не проще передавать int в функцию?

Добавлено через 1 минуту
Цитата Сообщение от slavka_online Посмотреть сообщение
Python
1
2
for i in range(new_arr.__len__()):
    print(stdvid(new_arr[i]))
уж коли такое делаете, то
Python
1
2
for i in range(len(new_arr)):
    # и тут...
0
 Аватар для slavka_online
1 / 1 / 0
Регистрация: 06.11.2012
Сообщений: 102
06.09.2013, 22:49  [ТС]
Цитата Сообщение от slavka_online Посмотреть сообщение
Python
5
6
7
8
9
    if int(tmp)!=0:
        while tmp>9:
            tmp/=10
            i+=1
        itog=str(tmp)+str("*10^")+str(i)
этот кусок кода отвечает за перевод чисел когда целая часть больше единиц к примеру 2345 => 2.345*10^3
вторая часть кода за числа такого вида пример 0.00034 => 3.4*10^-4

Добавлено через 1 минуту
я привожу к int что бы проверить целую часть

Добавлено через 1 минуту
Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
author__ = 'user'
 
#############################################################
#                                                           #
#                                                           #
#                Прога для лаб по физике                 #
#                                                           #
#                                                           #   
#############################################################
 
import math
 
#функция поиска среднего___________________________________________
def sred_znach (arr, step):
    sred=0
    for i in arr:
        sred+=i
    sred=round(sred/arr.__len__(), step)
    return sred
 
#______________________________________________________________
 
 
 
#Функция приведения числа в стандартный вид
def stdvid (tmp):
 
    i=0
 
    if int(tmp)!=0:
        while tmp>9:
            tmp/=10
            i+=1
        itog=str(tmp)+str("*10^")+str(i)
    elif int(tmp)==0:
        while int(tmp)==0:
            tmp*=10
            
            i-=1
        itog=str(tmp)+str("*10^")+str(i)
 
    return itog
 
#_____________________________________________________________________
 
#Функция вычисления погрешности по Стьюденту
def pogreshnost(arr, step, stud): #итоговый столбец, число значищих цифр, стьюдент
    
    sred1=sred_znach(arr,step)
    print("\n\nВходной столбец\n")
    for i in range(arr.__len__()):
        print(arr[i])
    print("\nСреднее: ", sred1) #Среднее в столбце
    
    print("----------------------------------------------------")
 
    new_arr=[]
 
    for x in arr:
        new_arr.append(sred1-x)
    print("\n\nsred-arr:\n ")
 
    for i in range(new_arr.__len__()):
        print(new_arr[i])
    print("----------------------------------------------------")
 
    for i in range(new_arr.__len__()):
        new_arr[i]=new_arr[i]**2
 
    print("\n\n(sred-arr)^2:\n ")
    for i in range(new_arr.__len__()):
        
        print(stdvid(new_arr[i]))
 
    print( "\nСреднее:", sred_znach(new_arr,10))
    print("----------------------------------------------------")
 
    sred2=sred_znach(new_arr, 10) #Шаг округления для очень малых чисел подбирается вручную
 
    pogr=stud*math.sqrt(sred2/(new_arr.__len__()*(new_arr.__len__()-1)))
 
    print("\n\n\nПогрешность: ", round(pogr, step))
    print("ОТВЕТ: ", stdvid(sred1), "+-", round(pogr,step))
 
#_____________________________________________________________________
 
 
############################################################################
#########################Условие писать здесь###############################
############################################################################
 
 
 
arr=[]   #исходный столбец
print("Введите Столбец, для завершения введите 'все': \n")
flag=True
while flag:
    
    tmp=input()
    if tmp!="все":
        arr.append(float(tmp))
    elif tmp =="все": flag=False
    
 
step=int(input("Введите число значащих цифр: ")) #Число значищих цифр
 
stud=float(input("Введите коэффициент Стьюдента: ")) #коэффициент Стьюдента
 
pogreshnost(arr, step, stud)
 
 
 
_q=input()


вот вся программа для поиска погрешности в измерениях и записи доверительного интервала.
0
Z3JheSBoYXQ=
 Аватар для fanatdebian
342 / 237 / 83
Регистрация: 08.07.2012
Сообщений: 577
06.09.2013, 23:07
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
>>> def Convert(value):
    try: 
        r = [int(s) for s in value if int(s)]
    except ValueError:
        print "Wrong value"
        return False
    print "All ok"
    return r
 
>>> 
>>> s = "1234"
>>> s1 = "1234sdf"
>>> Convert(s)
All ok
[1, 2, 3, 4]
>>> Convert(s1)
Wrong value
False
>>>
0
 Аватар для slavka_online
1 / 1 / 0
Регистрация: 06.11.2012
Сообщений: 102
06.09.2013, 23:19  [ТС]
блин, мужики, мне просто нужно корректное отображение чисел, чтобы они не были гигантскими в длину, придется наверное на C# написать
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
06.09.2013, 23:59
Зачем же сразу в крайности, есть функции встроенные для округления числа.
0
Z3JheSBoYXQ=
 Аватар для fanatdebian
342 / 237 / 83
Регистрация: 08.07.2012
Сообщений: 577
07.09.2013, 00:42
Цитата Сообщение от slavka_online Посмотреть сообщение
блин, мужики, мне просто нужно корректное отображение чисел, чтобы они не были гигантскими в длину, придется наверное на C# написать
Python
1
2
3
4
5
6
>>> flo = 12345.1234567
>>> flo
12345.1234567
>>> "%.4f" % flo
'12345.1235'
>>>
Сперва формулируй конкретно и более точно что тебе нужно. А по ограничению, вкури форматированный вывод, он почти полностью передран с Си, с добавлением разных прибамбасов.
0
 Аватар для slavka_online
1 / 1 / 0
Регистрация: 06.11.2012
Сообщений: 102
07.09.2013, 17:14  [ТС]

вот что я хотел донести и не знал что это будет так трудно. НО почему то эта функция в отдельном файле работает, а в том большом нет
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
08.09.2013, 11:43
Python
1
2
3
4
import sys
 
for line in sys.stdin:
    print('{:.2e}'.format(float(line.strip())).replace('e', '*10^'))
0
165 / 164 / 23
Регистрация: 23.02.2011
Сообщений: 347
09.09.2013, 18:30
slavka_online, Чувак, это следствие обычной погрешности float чисел. Просто округляй до необходимой тебе точности.
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
09.09.2013, 18:33
Python
1
2
3
4
5
6
7
>>> import decimal
>>> d = decimal.Decimal('1.11111111111111111')
>>> d
Decimal('1.11111111111111111')
>>> d * 3
Decimal('3.33333333333333333')
>>>
Python
1
2
3
4
5
>>> import decimal
>>> d = decimal.Decimal('2345')
>>> '{:.100f}'.format(d / 10 ** 50)
'0.0000000000000000000000000000000000000000000000234500000000000000000000000000000000000000000000000000'
>>>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.09.2013, 18:33
Помогаю со студенческими работами здесь

Неожиданное поведение программы: почему после каждой выведенной фразы в консоли появляются цифры?
почему после каждой выведенной фразы в консоли появляются цифры? например, Введите значение а:1.4822е-323 и как...

Почему при добавлении таблицы начинают приписываться какие то лишние цифры?
Есть запрос SELECT SUM(crm_doplat.summ) as REV, concat(SUM(crm_doplat.summ)/COUNT(crm_doplat.summ)) as PRICE FROM `crm_doplat` все...

Появляются лишние Sequence
@Entity @Table(name = "categories") public class Category { private static final String SEQ_NAME = "category_seq"; ...

Откуда появляются лишние теги <a>?
Здравствуйте начинаю изучать web разработку, сайты точнее говоря, начал делать шапку и тут появилась проблема! Появляются...

В Chart появляются лишние точки
Ставлю на график просто точку: this.chart1.Series.Points.AddXY(1, 1); На графике появляются лишние точки.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru