浮动/舍入问题

嗨,我是Python的初学者.
我想编写一个将Celcius转换为Wahrenheit的功能
一:
Def celciustofahenheit(TC):
tf =(9/5)*TC+32
返回TF
我希望答案正确到一个小数点,所以
Celciustofahenheit(12)将返回53.6.
当然,以上功能返回53.600000000000001.
如何正确格式化?

# 回答1


2月25日,上午10:44,helen.m.fl ...@gmail.com写道:
顺便说一句,我尝试了一下:
返回'%2.1F'%TF,但这是返回字符串而不是数字.
还有其他建议吗?
# 回答2


Sabatier写道:
顺便说一句,我尝试了一下:
返回'%2.1F'%TF,但这是返回字符串而不是数字.
还有其他建议吗?
但是您在上面的格式字符串上要求一个字符串.
在其他情况下,格式化也没有任何意义,因为一个数字是
数字和53.600000和53.6是相同的数字(除精度外).
您关心的是二进制中的数字如何表示.什么时候
显示值使用您上面显示的格式字符串,所有内容都将
工作.
# 回答3


2008年2月25日,星期一12:44:46 tarihinde hexhinde hexhinde@gmail.comÅ -inlarä±yazmä±Åtä±:
使用回合(数字,数字)功能:
tf = round((9/5)*TC+32,1)
# 回答4


necmettin乞eg 使用回合(数字,数字)函数:TF = 3D回合((9/5)*TC+32,1)

53.600000000000001
53.600000000000001
- -
\ s -si the@chiark.greenend.org.uk- http://www.chaos.org.uk/~sion/
"坦率地说,我对企鹅没有一种方式或另一种方式"
- 亚瑟·克拉克(Arthur C. Clarke)
她的nu成为se bera eadward ofdunhlæddreheafdesbæcebump bump bump bump bump

# 回答5

hexplydeyde*****@gmail.com写道:
打印celcisutofahenheit(12)
会很好.
Python 2.5.1(R251:54863,2007年10月5日,13:36:32)
[GCC 4.1.3 20070929(Preelease)(Ubuntu 4.1.2-16ubuntu2)]在Linux2上
键入"帮助","版权","学分"或"许可"以获取更多信息.
.... tf =(float(9)/5)*TC+32
....返回TF
...
53.600000000000001
53.6
口译员的直率显示为
苦涩的结尾,通过reper函数进行格式.打印
使用STR格式以获得更期待的结果.
梅尔.
# 回答6


新闻:d4 ************************************************************************************************************************************************************************************ hsg.googlegroups.com ...
|嗨,我是Python的初学者.
|我想编写一个将Celcius转换为Wahrenheit的功能
|一:
|
| Def celciustofahenheit(TC):
| tf =(9/5)*TC+32
|返回TF
除非您导入"整数部门"或使用3.0,否则应该是
9.0/5.0.
|我希望答案正确到一个小数点,所以
| Celciustofahenheit(12)将返回53.6.
如书写,在2.x上运行的2.x返回44.
tjr
# 回答7


2月26日,上午7:14," Terry Reedy" 语法改变了吗?我以为是:
来自__future__进口部
OP可能希望避免混乱和POIN teless划分
使用:
TF = 1.8 * TC + 32
# 回答8


在3月7日,5:12*PM,Piet Van Oostrum

便便和可靠地做到这一点存在问题.请参阅http://bugs.python.org/issue1580
进行最近的讨论.
标记

# 回答9


2008年3月7日星期五23:12:27 +0100,Piet van Oostrum写道:
好的.这是一个功能,而不是错误.
浮子 * *令人困惑且不直觉.任何自负的人
程序员应该克服幻想,即漂浮是真实的
可能,在他们学习不得不学习的不良习惯之前.如果说
首先问他们为什么要获得53.600000000000001而不是53.6,
随它吧.如果他们想脱离苛刻的现实,他们可以
做这个:
53.6
- -
史蒂文
# 回答10


在3月7日,11:23*下午,Steven d'Aprano cybersource.com.auwrote:
好的.这是一个功能,而不是错误.
即使这样,尚不清楚Python的当前行为不可能是
改进.我对缺乏一致性有些不喜欢
以下是由python任意剥离尾声引起的
从C库函数返回结果的零:
10.1
10.19999999999999
10.300000000000001
10.4
Piet van Oostrum的建议给出了一种很好的处理方式
这种不一致.不幸的是看起来并不容易
实践中实现这一点:主要困难似乎是
为了确保浮动(reter(x))== x往返您
需要编写例程以控制str -float和
float -str转换,不要忘记这些例程
必须相当快,并在各种方面正确工作
非IEEE 754平台以及通常的平台.这表示
添加,维护和测试数百行
复杂的代码,现在有几个C库呼叫就足够了.
标记
# 回答11


3月8日,11:34*上午,马克·迪金森(Mark Dickinson) 更正:经过仔细检查,不是在做python
拖曳零的剥离;这是C库.
标记
# 回答12


马克·迪金森·施雷夫(Mark Dickinson Schreef):
好的.这是一个功能,而不是错误.

即使这样,尚不清楚Python的当前行为不可能是
改进.我对缺乏一致性有些不喜欢
以下是由python任意剥离尾声引起的
从C库函数返回结果的零:
10.1
10.19999999999999
10.300000000000001
10.4
实际上,我看不到所有大惊小怪.如果你想要一个很好的
圆数,使用打印或str()或%操作员.
*仅当您使用repr()或交互式解释器使用它时
要打印表达式的价值,您会得到一些没有的东西
看起来很好.
- -
现在生活中最可悲的方面是科学收集知识
比社会更快地聚集了智慧.
- 艾萨克·阿西莫夫(Isaac Asimov)
Roel Schroeven

# 回答13


>>>> Dennis Lee Bieber DLB53.600000000000001
DLB53.6
DLB53.6 DLB53.600000000000001 不,您看到的不是"打印"的行为,而是``str''的行为. "打印"用途 " str"要进行格式而不是`ret',而互动提示 使用" str". " str"是为了取悦人类读者," ret"是 应该给您一些您可以用作输入的东西,并准确获取 相同的值. 但是" str"仅通过给您降低准确性来做到这一点 在地毯下扫除问题: 53.6 错误的 '53 .59999999999997' 真的 '53 .600000000000001' 真的 - - Piet Van Oostrum URL:http://pietvanooostrum.com [PGP 8DAE142BE17999C4] 私人电子邮件:pige@vanoostrum.org

标签: python

添加新评论