python控制小数点位数,在Python浮点操作中将小数位数限制为两位

My idea is accept a number as input, perhaps 1.00 and then multiply it by a constant.

Subsequently it is passed to a function that determines whether or not it is a valid palindrome.

In the case that it is not, the number will be incrementally augmented until a valid palindrome is achieved-- however, I'd like to restrict the exploration space to the 2nd decimal place.

That is to say 1.01 is valid output, but 1.001 is not.

The code that follows executes the process described above, with the caveat that the current output is typically invalid, overflowing into smaller decimal spaces, i.e. 1.00001 and so on.

How can the number of decimal places of the operation be restricted to two?

import sys

# This method determines whether or not the number is a Palindrome

def isPalindrome(x):

x = str(x).replace('.','')

a, z = 0, len(x) - 1

while a < z:

if x[a] != x[z]:

return False

a += 1

z -= 1

return True

if '__main__' == __name__:

trial = float(sys.argv[1])

candidrome = trial + (trial * 0.15)

print(candidrome)

# check whether we have a Palindrome

while not isPalindrome(candidrome):

candidrome += 0.01

if isPalindrome(candidrome):

print( "It's a Palindrome! " + str(candidrome) )

The solution suggested here does not seem to work:

# check whether we have a Palindrome

while not isPalindrome(format(round(candidrome,2))):

candidrome += 0.01

解决方案

Got it like this:

import sys

# This method determines whether or not the number is a Palindrome

def isPalindrome(x):

x = str(x).replace('.','')

a, z = 0, len(x) - 1

while a < z:

if x[a] != x[z]:

return False

a += 1

z -= 1

return True

if '__main__' == __name__:

trial = float(sys.argv[1])

candidrome = trial + (trial * 0.15)

print(candidrome)

candidrome = round(candidrome, 2)

# check whether we have a Palindrome

while not isPalindrome(candidrome):

candidrome += 0.01

candidrome = round(candidrome, 2)

print(candidrome)

if isPalindrome(candidrome):

print( "It's a Palindrome! " + str(candidrome) )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值