@Polina2595

Вычитаю одно округленное число из другого, в ответе выдается число с кучей знаков после запятой, как это исправить?

Есть у меня в коде такая строчка:

Vmeh = V_rounded - Vruch_rounded в ней  V_rounded и Vruch_rounded это округленные ранее числа, при этом в ответе Vmeh у меня = 133.83200000000002

Я конечно понимаю, что могу округлить и переменную Vmeh, но по сути она должна считаться как 140.58 - 6.748, ведь на именно округленные числа я и ссылаюсь.

L = float(input('L='))
a = float(input('a='))
m = float(input('m='))
k = float(input('kруч='))  #k-коэф.ручной разработки

L_str = str(L)
a_str = str (a)
m_str = str (m)
k_str = str(k)

print('Вычисление объемов:')
print('L =' + ' ' + L_str + ' — длина траншеи, м' )
print('a =' + ' ' + a_str + ' — ширина основания траншеи, м')
print('m =' + ' ' + m_str + ' — крутизна откосов ( 1:m )')


#средняя толщина
import statistics
numbers = [1.211, 1.300, 1.500]
numbers_str = str (numbers)
average = statistics.mean(numbers)
average_rounded = (round(average,3))
average_rounded_str = str(average_rounded)
n = len(numbers)
n_str = str(n)

print(*numbers, sep = ' + ')
print('hср = (h1 + h2 + ... + hn) / n = ' + numbers_str + ' / ' + n_str + ' = ' + average_rounded_str + ' — средняя глубина траншеи, м')


#площадь разработки
S = ( a * average_rounded + m * average_rounded**2)
S_rounded = (round(S,3))
S_rounded_str = str (S_rounded)
print ('S = a * hср + m * hср ² = ' + a_str + ' * ' + average_rounded_str + ' + ' + m_str + ' * ' + average_rounded_str + '^2' + ' = ' + S_rounded_str + ' — площадь поперечного сечения траншеи, м2')


#объем
V = ( S_rounded * L )
V_rounded = (round (V, 3))
V_rounded_str = str (V_rounded)
print('V = S * L = ' + S_rounded_str + ' * ' + L_str + ' = ' + V_rounded_str + ' —  объем разработанного грунта, м3')


#ручная и мех.разработки
Vruch = V_rounded * k
Vruch_rounded = (round(Vruch, 3))
Vruch_rounded_str = str (Vruch_rounded)
Vmeh = V_rounded - Vruch_rounded
Vmeh_str = str (Vmeh)
print('Vруч = V * kруч' + ' = ' + V_rounded_str + ' * ' + k_str + ' = ' + Vruch_rounded_str + ' —  объем ручной доработки грунта, м3')
print('Vмех = V - Vруч = ' + V_rounded_str + ' - ' + Vruch_rounded_str + ' = ' + Vmeh_str + ' —  объем механизированной разработки грунта, м3' )
  • Вопрос задан
  • 217 просмотров
Решения вопроса 1
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Добро пожаловать в реальный мир вычислений чисел с плавающей запятой с погрешностью! Если вам нужны точные вычисления - используйте тип decimal или аналогичный для вашего ЯП.
https://habr.com/ru/articles/266023/
https://learn.microsoft.com/ru-ru/office/troublesh...
https://0.30000000000000004.com/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы