我正在尝试解决以下挑战:
1234.5678, 2, 3
调用函数,返回值应该是 34.567
我有一个不使用
f-strings
的版本,我想知道是否有更好的方法使用 f-strings
来代替。
def eitherSide(someFloat, before, after) :
bits = str(someFloat).split('.')
bit1 = bits[0][:-before]
bit2 = bits[1][:after]
num = float(bit1 + '.' + bit2)
return print(num)
谢谢!
我认为从浮点数的整数部分中去除数字没有数学意义。 但 fstring 允许您使用类似
print(f"{value:.3f}")
之类的内容轻松格式化小数部分
如果你真的想使用 fstring 你可以这样做:
def eitherSide(someFloat, before, after) :
left, right = str(someFloat).split('.')
return f"{left[-before:]}.{right[:after]}"
使用一些数学和 f 字符串:
def eitherSide(someFloat, before, after):
return f"{someFloat % 10**before:.{after}f}"
# return float(f"{sf:.{after}f}")
# seems weird to possibly lose the representation again
然而,这不会截断,而是圆形。