如何将数字拆分为符号,整数和小数?

时间:2018-03-19 07:03:45

标签: python string list split numbers

抱歉,如果我的格式有点奇怪。我不习惯在此网站上格式化代码。 我给了一个字符串格式的十进制数。我希望能够将这个数字分成符号,整数部分和小数部分。

示例:

INPUT: -1223.231

OUTPUT: sign: - integer: 12 fraction: 231

我的代码仅适用于小数的负数或正数。当我尝试在整数(例如1234或-1234)上使用我的代码时,我遇到了索引错误。我相信问题是当我试图拆分整数时我不能。 为了澄清我希望整数的输出看起来像这样:

INPUT: 1234

OUTPUT: sign: + integer: 1234 fraction: 0

关于我如何制作代码的任何帮助也会将整数分开? 提前谢谢。

decimal_string = '-1223.231'
if(decimal_string[0]=="-"):
    sign="-"
    splitValue = decimal_string.split('.')
    print("sign: " + sign + " integer: " + splitValue[0][1:] +" fraction: " + splitValue[1])

elif(decimal_string=="0"):
    print("sign: + integer: " + decimal_string[0:] + " fraction: 0")

else:
    sign="+"
    splitValue = decimal_string.split('.')
    int_part = int(splitValue[0])
    decimal_part = int(splitValue[1])
    print("sign: " + sign + " integer: " + splitValue[0] +" fraction: " + splitValue[1])

1 个答案:

答案 0 :(得分:1)

这应该有所帮助。

s = "-1223.231"
s1 = "-1234"
s2 = "1234"
def getVal(s):
    sign = "+"
    fraction = 0
    integer = None
    if s.startswith("-"):                     #Check if input is negative
        sign = "-"
        s = s.replace("-", "")
    if "." in s:                              #Check if input has decimal
        integer, fraction = s.split(".")
    else:
        integer = s
    return sign, integer, fraction

print("sign: {0} ,integer: {1},fraction: {2}".format(*getVal(s)))
print("sign: {0} ,integer: {1},fraction: {2}".format(*getVal(s1)))
print("sign: {0} ,integer: {1},fraction: {2}".format(*getVal(s2)))

<强>输出:

sign: - ,integer: 1223,fraction: 231
sign: - ,integer: 1234,fraction: 0
sign: + ,integer: 1234,fraction: 0
相关问题