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

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

06.09.2013, 22:18. Показов 5671. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru