首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >浮点表示的模拟

浮点表示的模拟
EN

Stack Overflow用户
提问于 2013-11-07 02:30:21
回答 2查看 147关注 0票数 2

我正在上一门Python入门课程,我们有一个作业,要求我们模拟浮点数的存储方式。

基本上,我们必须演示5位尾数。例如,您输入123,它必须输出为12300。如果你输入12345678,它必须输出为12345。如何做到这一点?有没有一个函数可以解决这个问题,或者这只是一个格式化的问题?请记住,这是一个入门课程,我们不允许使用任何外部库。

EN

回答 2

Stack Overflow用户

发布于 2013-11-07 02:42:08

您可以使用Python的string formatting functionality

代码语言:javascript
复制
'{:<05d}'.format(number)[:5]

下面是一些例子:

代码语言:javascript
复制
>>> '{:<05d}'.format(123)[:5]
'12300'
>>> '{:<05d}'.format(12345678)[:5]
'12345'

以下是一些说明:

  • <说:对齐left.
  • 0上的数字说:使用0作为填充character.
  • 5说:将宽度设置为至少five.
  • d说:这是一个小数。

由于数字可以长于五位数,因此我们通过执行[:5]只获取前五个字符。这就是所谓的slice notation,它允许您获取字符串的一部分。

票数 2
EN

Stack Overflow用户

发布于 2013-11-07 02:52:57

所以,让我们试着解决这个问题,并写出我们必须做的粗略的框架。请注意,每当我遇到一个不是很明显的问题时,我都会将它推入它自己的函数中,稍后我可以处理它:

代码语言:javascript
复制
string = str(number)
if len(string) > 5:
    string = truncate_string(string)
elif len(string) < 5:
    string = pad_string_with_zeros(string)

因此,让我们尝试实现truncate_stringpad_string_with_zeros

字符串基本上是一个字符列表。我们如何获取列表的前5个元素?通过列表切片。因此,我们可以像这样实现truncate_string

代码语言:javascript
复制
def truncate_string(string):
    return string[:5]

我们如何用零填充字符串?如果您参考Python文档,您可以使用ljust函数:

代码语言:javascript
复制
>>> '11'.ljust(5, '0')
'11000'
>>> '12345678'.ljust(5, '0')
'12345'

因此,我们的函数可以是:

代码语言:javascript
复制
def pad_string_with_zeros(string):
    return string.ljust(5, '0')

或者,我们可以使用while循环:

代码语言:javascript
复制
def pad_string_with_zeros(string):
    while len(string) < 5:
        string += '0'

...although,这样效率会更低。

如果我们把所有的函数都移到主代码中,那么我们可能会得到这样的结果:

代码语言:javascript
复制
string = str(number)
if len(string) > 5:
    string = string[:5]
elif len(string) < 5:
    string = string.ljust(5, '0')

事实证明,列表切片不会抛出错误,即使您传入的字符串太小或太大。例如,'12'[:5]将生成字符串'12'

因此,我们甚至不需要检查字符串的大小,只需将其压缩为以下几行:

代码语言:javascript
复制
string = str(number)
string = string[:5].ljust(5, '0')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19819911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档