如何判断一个字符串是不是是数字包括小数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何判断一个字符串是不是是数字包括小数相关的知识,希望对你有一定的参考价值。
抛开具体的语言来说吧。这个问题等同于判断一个字符串能否合法的转换成一个数值(含小数)
1、如果是高级语言,JAVA,C# 你可以用系统的转换函数将字符串转换成数值型。try-catch一下,不抛出异常就OK,否则就不合法。
2、如果是C之类的,你可以这么想,数值必须字符是介于0-9之间,最多加一个小数点。详细的循环判断下。
3、如果是前端,或者更省事的,你可以百度下 正则表达式 参考技术A Regex reg = new Regex(@"^\d+\.\d+$");
if (reg.IsMatch(str))
MessageBox.Show("输入的是小数");
以上匹配,只有包含小数点,且前面后面都只包含数字的,才会认定为小数。
你的判断没考虑非数字。
python判断字符串是否是数字的算法
判断字符串是否是数字(包含负数和小数)
算法1:
1、分小数和整数:如果小数点个数为1,则可能是小数。如小数点个数为0,则可能是整数。小数点个数非0也非1,那么就不是数字。
2、如果是小数,再分正数和负数的情况:如果首位为负号,则可能是负小数。如果首位不为负号,则可能是正小数。
1)如果首位为负号,则去掉负号。
2)如果首位不为负号;或者是首位为负号,去掉首位负号之后。则判断是否为是否为“.”,如果是,那么就不是数字,如果不是,就去掉"."
3)再判断剩下字符是否都在"0123456789"内,如果不都在则不是数字,否则就是数字
3、如果是整数,也同样分正数和负数的情况。如果首位为负号,则可能是负整数,如果首位不为负号,则可能是正整数。
1)如果首位诶负号,则去掉负号。
2)如果首位不为负号;或者是首位为负号,去掉首位负号之后。判断剩下字符是否都在"0123456789"内,如果不都在则不是数字,否则就是数字
#encoding=utf-8
def is_number(s):
if s.count(".")==1: #小数的判断
if s[0]=="-":
s=s[1:]
if s[0]==".":
return False
s=s.replace(".","")
for i in s:
if i not in "0123456789":
return False
else: #这个else与for对应的
return True
elif s.count(".")==0: #整数的判断
if s[0]=="-":
s=s[1:]
for i in s:
if i not in "0123456789":
return False
else:
return True
else:
return False
print(is_number("1334345345"))
print(is_number("1.12344565"))
print(is_number("-14344343"))
print(is_number("-1.123456"))
print("**********************")
print(is_number("abc"))
print(is_number("1.32.2"))
print(is_number(".2344"))
print(is_number("1234a"))
print(is_number("--1.1"))
print(is_number("--1abc"))
算法2:
1、判断首位是否是负号或者数字,如果不是,则不是数字。如果是,则可能是数字。
2、判断"."和"-"的个数是否都小于等于1,如果不是,则不是数字,如果是,则可能是数字。
3、去掉"."和"-" 。
4、判断剩下的字符是否都在"0123456789"内,如果不都在则不是数字,否则就是数字
#encoding=utf-8
def is_number(s):
if s[0]=="-" or s[0] in "0123456789":
if s.count(".")<=1 and s.count("-")<=1:
s=s.replace("-","").replace(".","")
#print (s)
for i in s:
if i not in "0123456789":
return False
else: #这个else与for对应
return True
else:
return False
else:
return False
print(is_number("1334345345"))
print(is_number("1.12344565"))
print(is_number("-14344343"))
print(is_number("-1.123456"))
print("**********************")
print(is_number("abc"))
print(is_number("1.32.2"))
print(is_number(".2344"))
print(is_number("1234a"))
print(is_number("--1.1"))
print(is_number("--1abc"))
以上是关于如何判断一个字符串是不是是数字包括小数的主要内容,如果未能解决你的问题,请参考以下文章