Python中四舍五入到小数点后2位
这不是一个重复,因为我已经检查了所有之前,这篇文章在这个网站上。我想我已经做到了头两个要点。第一个,我将通过一个字符串,但我愿意改变,如果你知道另一种方式。第二个是使用逗号分隔符表示$。所以我将使用浮动,但如果找到更好的方法,我再次愿意改变 但是我被卡住了。 打印%.2f%str是我找到的,但我需要把它四舍五入到两个小数点和最后一个项目符号 代码: 外壳:Python中四舍五入到小数点后2位,python,Python,这不是一个重复,因为我已经检查了所有之前,这篇文章在这个网站上。我想我已经做到了头两个要点。第一个,我将通过一个字符串,但我愿意改变,如果你知道另一种方式。第二个是使用逗号分隔符表示$。所以我将使用浮动,但如果找到更好的方法,我再次愿意改变 但是我被卡住了。 打印%.2f%str是我找到的,但我需要把它四舍五入到两个小数点和最后一个项目符号 代码: 外壳: C:\Users\jacke\PycharmProjects\ASLevelHomeworkWeek18\venv\Scripts\pyth
C:\Users\jacke\PycharmProjects\ASLevelHomeworkWeek18\venv\Scripts\python.exe C:/Users/jacke/PycharmProjects/ASLevelHomeworkWeek18/ASLevelHomeworkWeek18.py 6567.62 Traceback (most recent call last): %.2f File
C:/Users/jacke/PycharmProjects/ASLevelHomeworkWeek18/ASLevelHomeworkWeek18.py", line 10, in <module> print(random_number()) File
C:/Users/jacke/PycharmProjects/ASLevelHomeworkWeek18/ASLevelHomeworkWeek18.py", line 7, in random_number print("%.2f") % str TypeError: unsupported operand type(s) for %: 'NoneType' and 'type' Process finished with exit code 1
如果我明白你的意思,你想把数字四舍五入到小数点后2位。我会这样做的
import random
def random_number():
random_dollars = random.uniform(1, 10000)
split = str(random_dollars).split(".")
if (len(split) == 2 ):
if (len(split[1]) == 1 ):# checks if 1 digit after decimal place
answer = split[0] + ".0"
split[1] = str(int(int(split[1]) / (10 ** (len(split[1]) - 3) )))
# Gets 3 decimal places
if int(split[1][-1:]) => 5: #Checks if last digit is above or equal to 5
split[1] = int(split[1][:-1])
split[1] += 1
else:
split[1] = int(split[1][:-1])
answer = split[0] + '.' + str(split[1])
else:
answer = split[0] + ".00"
print(answer)
random_number()
因此,如果随机数为100,它将加2个零。如果数字像100.1,它将加一个零。它还将环绕它。您可以如下设置货币格式:
def random_number():
random_dollars = random.uniform(1, 10000)
result = '$ {:0>9}'.format('{:,.2f}'.format(random_dollars))
print(result)
{:0>10}表示:将字符串左移到宽度为9的0处。
{:,.2f}四舍五入到小数点后两位.2f,并添加逗号作为分隔符
请注意:通过使用random.uniform1,10000,您的大多数数字都将大于1000,如果您想用少量测试脚本,您可以使用random\u$s=10**random.uniform0,4:
TL;DR:你必须把%直接放在字符串后面,你必须把一个实变量放在那里,而不是str类型 从错误消息的最后一行可以看出问题出在%运算符上。您还可以看到,它试图对两个类型为“NoneType”和“type”的对象执行操作。由于将整个print语句放在%前面,并且print返回None类型的None,因此第一个操作数的类型为NoneType。然后,第二个操作数是str类型,正如刚才所说,它是一个类型。您可以通过在字符串后移动%运算符并用变量random_$替换str来解决此问题,因为这是您要插入字符串的内容 随机输入 def随机数: random_美圆=random.uniform1.00,10000.00 打印单位:美元,2 这: 打印%.2f%随机\u美元 打印随机数
如果你没有告诉我们你被困在哪里。您收到了什么错误消息,以及什么错误结果?如果你创建一个例子,你会得到更多更好的答案。尤其要确保输入和预期的测试数据是完整的,而不是伪数据,并且可以轻松剪切并粘贴到编辑器中,以允许测试建议的解决方案。C:\Users\jacke\PycharmProjects\ASLevelHomeworkWeek18\venv\Scripts\python.exe C:/Users/jacke/PycharmProjects/ASLevelHomeworkWeek18/ASLevelHomeworkWeek18.py 6567.62回溯上次调用:%.2f文件C:/Users/jacke/PycharmProjects/ASLevelHomeworkWeek18/ASLevelHomeworkWeek18.py,第10行,在printrandom_编号文件C:/Users/jacke/PycharmProjects/ASLevelHomeworkWeek18/ASLevelHomeworkWeek18.py,第7行,在随机数字打印%.2f%str TypeError:不支持%的操作数类型:'非类型'和'类型'进程已完成,退出代码为1。请将该信息编辑到问题中。请花时间将要求作为文本而不是图像包含在问题中,并添加错误消息。
def random_number():
random_dollars = random.uniform(1, 10000)
result = '$ {:0>9}'.format('{:,.2f}'.format(random_dollars))
print(result)
def random_number():
random_dollars = 10**random.uniform(0, 4)
result = '$ {:0>9}'.format('{:,.2f}'.format(random_dollars))
print(result)
def random_number():
random_dollars = random.uniform (1.00, 10000.00)
n = round(random_dollars,2)
bd, d = str(n).split('.')
if len(d) == 1:
n = bd + "." + d + '0'
return n
else:
return n
for i in range(1, 20):
print(random_number())
7340.55
7482.70
3956.81
3044.50
4108.57
4864.90
235.00
9831.98
960.97
1172.28
5221.31
3663.50
5410.50
3448.52
8288.13
293.48
1390.68
9216.15
6493.65