如何存储浮点数变量和整数?我不知道有什么区别

How do I store floating point number variables and integers? I don't know what the difference is

提问人:Erin McKee 提问时间:1/12/2023 最后编辑:Erin McKee 更新时间:1/27/2023 访问量:202

问:

我的家庭作业是编写一个程序,要求用户输入成人和儿童餐的价格,然后询问每个餐食的价格,然后询问销售税率,然后询问您投入了多少钱。然后,它应该输出小计,然后是带有销售税的总计,然后它应该从用户“支付”的金额中减去总计(例如:总计是 12.50 美元,他们给你 20 美元,它应该给你零钱金额)

我的麻烦在于知道如何将用户输入的变量存储为浮点数和整数。我不知道有什么区别以及如何将其放入代码中。从技术上讲,我的程序可以运行和工作,但这不是说明要求您这样做的方式。当它给你变化时,我也会到达许多小数位。我如何让程序知道它需要以货币形式出现? 这是讲师为第一部分给出的说明:

  1. 向用户询问儿童餐和成人餐的价格,并将这些值作为浮点数正确存储到变量中。

  2. 向用户询问成人和儿童的数量,并将这些值以整数形式正确地存储到变量中。

  3. 向用户询问销售税率,并将该值正确存储为浮点数。

  4. 计算并显示小计(此时不要担心四舍五入到小数点后两位)。

print("Please fill out the following: ")
childsmeal = input ("What is the price of the child's meal? ")
adultmeal = input ("What is the price of the adult's meal? ")
numchild = input("How many children? ")
numadult = input("How many adults? ")
tax = input("What is the sales tax rate? ")
payment = input("Please enter your payment amount: ")
costchild = float(childsmeal) * float(numchild)
costadult = float(adultmeal) * float(numadult)
mealcost = float(costchild) + float(costadult)
mealtax = float(mealcost) * float(tax) / 100
total = float(mealtax) + float(mealcost)
change = float(payment) - float(total)
print("Subtotal:", mealcost)
print("Sales Tax:", mealtax)
print("Total:", total)
print("Change:", change)

输出示例如下:

**Please fill out the following: 
What is the price of the child's meal? 4.50
What is the price of the adult's meal? 9.00
How many children? 3
How many adults? 2
What is the sales tax rate? 6
Please enter your payment amount: 40
Subtotal: 31.5
Sales Tax: 1.89
Total: 33.39
Change: 6.609999999999999**

我做错了什么? 这是我完成的程序的一个非常基本的版本。我只是想先了解它的基础知识,然后再添加更多的华丽内容以使其看起来不错。

python-3.x 变量 浮点 整数

评论

1赞 John Gordon 1/12/2023
浮点值必然是不精确的。最简单的解决方案是使用 round 函数,即 四舍五入到两位数的精度(便士)。total = round(total, 2)
2赞 JonSG 1/12/2023
看起来你并没有做错任何事情,而是你正在经历一个浮点数的怪癖(不是特定于python的)。看看 stackoverflow.com/questions/588004/... 这可能是你的答案
2赞 Axe319 1/12/2023
类似的东西会起作用。此外,如果将它们直接赋值为 s 和 s from,则无需在计算中使用 包装变量。numchild = int(input("How many children? "))intfloatinput()float
1赞 Axe319 1/12/2023
一个小提示,如果你对变量的类型感到困惑,你可以随时在调试时。print(type(my_variable))
1赞 Axe319 1/12/2023
在它分配了某些东西之后的任何时候。它适用于任何变量。例如:。对于赋值的输出部分(添加小数位和小数位),请查看字符串格式。应该有很多适合初学者的资源。childsmeal = input("What is the price of the child's meal? ")print(type(childsmeal))$

答:

0赞 bph 1/12/2023 #1

你做错了什么?- 您可以通过将最终答案四舍五入到小数点后两位来修复结果。

亿万年来,计算机在处理十进制数方面遇到了麻烦,并且总是存在“不精确”的风险,除非它们以避免它的方式存储和处理(内部)。查找“二进制编码十进制”或 BCD,如果您想探索背景。

您还应该熟悉数据类型。以下是 Python 中数据类型的一些参考:

例如,整数是“整数”1、2 和 3(它们包括负数)。十进制数是可以是小数的数字,其值在小数点之后。在计算机中,它们通常被称为“浮点”数,因为程序员可以决定存储多少精度。在数学中,如果您关心精度或有效数字,整数“0”并不总是与“0.00000000000000”具有相同的含义。

评论

0赞 Erin McKee 1/12/2023
所以我做对了吗?我只需要四舍五入吗?有没有办法让程序知道它是货币形式的?赋值说它必须在输出中的数字之前有 $$$。
0赞 chux - Reinstate Monica 1/12/2023
“亿万年来,计算机在十进制数方面遇到了麻烦”——>许多早期的计算机使用十进制浮点数,而且问题要少得多,所以不是很久。
0赞 bph 1/12/2023
@chux-ReinstateMonica - 幽默的夸张?
0赞 bph 1/12/2023
@ErinMcKee - 我不相信 Python 有单独的“钱”类型(某些平台有)。我建议你把答案四舍五入,并附加货币符号。