检查浮点数是否具有指定的位数和小数位数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检查浮点数是否具有指定的位数和小数位数相关的知识,希望对你有一定的参考价值。

我想检查浮点数是否具有指定的数字和小数位数。

具体来说,我想检查输入是否有五位数后跟一个小数位

方程54321

我试过看Regexp,但我想先看看是否有更简单的解决方案。

# I've started with the below code

def getNum():
    num = float(input('Enter number with 5 digits and 1 decimal place:'))

    while not len(str(abs(num))) == 5:
      print('Error: Number must have exactly five digits followed by one 
      decimal place.
')
      num = float(input('Enter number with 5 digits and 1 decimal place:'))

    return num

print(getNum())

例如,如果123的输入被传递到getNum函数,它应该继续提示用户再次输入,直到用户输入一个五位数字和第五位数后面的一个小数位数。

答案

在这种情况下,正则表达式是最简单的解决方案 - 无需回避它。

import re

# Explanation:
#   ^      start of string
#   d{5}  5 digits
#   .     literal period
#   d     digit
#   $      end of string
rgx = re.compile(r'^d{5}.d$')

tests = [
    '12345.6',
    'hi',
    '12345.67',
]

for s in tests:
    m = rgx.search(s)
    print(bool(m), s)

输出:

True 12345.6
False hi
False 12345.67

以上是关于检查浮点数是否具有指定的位数和小数位数的主要内容,如果未能解决你的问题,请参考以下文章

JMeter 如何生成指定取值范围指定小数位数的随机浮点数

如何格式化具有最大小数位数且没有额外零填充的浮点数?

JAVA如何将浮点数输出为指定位数的科学计数法?

Python:在同一行中打印带有首选小数位数的字符串和数字

C 语言中双精度浮点型精度怎样保留位数

python中将浮点数变成json时,控制小数位数