有没有办法使用f字符串从浮点数中去除小数点之前的数字?

问题描述 投票:0回答:2

我正在尝试解决以下挑战:

  • 编写一个采用 float 和两个整数(beforeafter)的函数。
  • 该函数应返回一个由小数点前的 before 位数和小数点后的 after 位数组成的浮点数。
  • 因此,如果我们用
    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)

谢谢!

python python-3.x f-string
2个回答
0
投票

我认为从浮点数的整数部分中去除数字没有数学意义。 但 fstring 允许您使用类似

print(f"{value:.3f}")

之类的内容轻松格式化小数部分

如果你真的想使用 fstring 你可以这样做:

def eitherSide(someFloat, before, after)  :
    left, right = str(someFloat).split('.')
    return f"{left[-before:]}.{right[:after]}"

0
投票

使用一些数学和 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

然而,这不会截断,而是圆形。

© www.soinside.com 2019 - 2024. All rights reserved.