【问题标题】:How to split a number into sign, integer and fractional?如何将数字拆分为符号、整数和小数?
【发布时间】:2018-03-19 07:03:44
【问题描述】:

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

例子:

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])

【问题讨论】:

    标签: python string list split numbers


    【解决方案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
    

    【讨论】:

    • 感谢您的帮助非常有用!
    猜你喜欢
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多