需要两位小数之间的匹配数字
Need matching digits between two decimals
假设我有两位小数(浮点数)。
a = 123.62903
b = 123.6233
现在我希望结果与这个小数点的数字相匹配。所以这里的结果应该是
123.62.
如果,
a =234.2387
b =232.2138
那么,结果应该是
result = 23.
这将是一个很大的帮助谢谢。
使用 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
如果你想在 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
假设我有两位小数(浮点数)。
a = 123.62903
b = 123.6233
现在我希望结果与这个小数点的数字相匹配。所以这里的结果应该是
123.62.
如果,
a =234.2387
b =232.2138
那么,结果应该是
result = 23.
这将是一个很大的帮助谢谢。
使用 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
如果你想在 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