Нужны совпадающие цифры между двумя десятичными знаками - PullRequest
0 голосов
/ 06 июля 2018

скажем, у меня есть 2 десятичных знака (с плавающей точкой).

a = 123.62903
b = 123.6233

теперь я хочу, чтобы результат совпадал с цифрами этого десятичного числа. поэтому результат здесь должен быть

123.62.

Если

a =234.2387
b =232.2138

тогда результат должен быть

результат = 23.

Это было бы очень полезно, спасибо.

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Если вы хотите сделать это в O (1), математика ваш друг. : -)

import math

def common(a, b):
    def trunc(x, precision):
        return math.floor(x / precision) * precision
    precision = math.pow(10, math.ceil(math.log10(math.fabs(a - b))))
    common = trunc(a, precision)
    if common == trunc(b, precision):
        return common
    else:
        return trunc(a, precision * 10)

print(common(123.62903, 123.6233))
print(common(234.2387, 232.2138))
print(common(123.62903, 112.21))

Это выводит:

123.62
230.0
100.0
0 голосов
/ 06 июля 2018

Использование zip и простая итерация.

Демо:

a = 123.62903
b = 123.62333

res = ''
for i, v in zip(str(a), str(b)):
    if i != v:
        break
    else:
       res += v

if res:
    print(float(res) if "." in res else int(res))

Выход:

123.62
...