如何在python中将小数点四舍五入为一位数?

How do I round the decimals to one digit in python?

提问人:sakrockzx 提问时间:7/18/2023 最后编辑:InSyncsakrockzx 更新时间:7/18/2023 访问量:58

问:

我写了一个代码,我必须用它来复制一个语句 100 次。在这种情况下,变量“度”必须迭代 3.6。我得到的不是带有 1 个十进制数字的十进制数,而是得到如下内容:

95%{background-color: linear-gradient(342.0000000000002deg, red, blue)}
96%{background-color: linear-gradient(345.60000000000025deg, red, blue)}
97%{background-color: linear-gradient(349.2000000000003deg, red, blue)}
98%{background-color: linear-gradient(352.8000000000003deg, red, blue)}

这是我的代码:

degrees = 0
percent = 0

for i in range(101):
    print(str(percent) + "%{background-color: linear-gradient(" + str(degrees) + "deg, red, blue)}")
    percent += 1
    degrees += 3.6

我希望代码返回带有一个小数点的结果。

Python 浮点 迭代 十进制

评论

1赞 Mark 7/18/2023
这回答了你的问题吗?将浮点数四舍五入到小数点后 x 位?
0赞 Keith Thompson 7/18/2023
@Barmar 不是最好的解决方案。 生成的浮点值仅是舍入值的近似值。例如,生成正好为“1.1.19999999999999999555910790149937383830547332763671875”。转换为字符串或输出时四舍五入。将二进制浮点值四舍五入到十进制数很少有用。round(degrees, 1)round(1.2, 1)
0赞 InSync 7/18/2023
请问你为什么要用Python来生成CSS代码?
0赞 Matthias 7/18/2023
@InSync 也许是因为他们可以。你有没有感觉到这有什么问题?
0赞 InSync 7/18/2023
@Matthias有点。在生成CSS代码时,CSS预处理器通常是答案。更不用说,不是 的有效值。linear-gradient()background-color

答:

1赞 Xiaomin Wu 7/18/2023 #1

您可以像这样使用 F 格式的字符串

degrees = 0
percent = 0

for i in range(101):
    print(f"{percent}%{{background-color: linear-gradient({degrees:.1f}deg, red, blue)}}")
    percent += 1
    degrees += 3.6

输出为

0%{background-color: linear-gradient(0.0deg, red, blue)}
1%{background-color: linear-gradient(3.6deg, red, blue)}
2%{background-color: linear-gradient(7.2deg, red, blue)}
3%{background-color: linear-gradient(10.8deg, red, blue)}
4%{background-color: linear-gradient(14.4deg, red, blue)}
5%{background-color: linear-gradient(18.0deg, red, blue)}
6%{background-color: linear-gradient(21.6deg, red, blue)}
7%{background-color: linear-gradient(25.2deg, red, blue)}
.......
0赞 huangkaiyi 7/18/2023 #2

您可以使用 round(number, number digit)

for i in range(101):
    print(str(percent) + "%{background-color: linear-gradient(" + str(round(degrees,1)) + "deg, red, blue)}")

如果十进制数严格优于 5,则它将四舍五入到下一个 (ceil) 整数,否则将四舍五入到下限 (floor)。

print(round(342.14,1)) # 342.1
print(round(342.15,1)) # 342.1
print(round(342.16,1)) # 342.2