Округление происходит, даже если я объявил мои переменные как float в python - PullRequest
2 голосов
/ 02 июля 2019

Мне нужно посчитать значения pos, neg и 0, разделить их на размер массива и вернуть три значения с 6 десятичными знаками. Вот массив 6 -4 3 -9 0 4 1

я пытался преобразовать переменные в float, и на каждом этапе я использовал функцию float

def plusMinus(arr):
    a=float(0.000000);
    b=float(0.000000);
    c=float(0.000000);
    for i in arr:
        if i==0:
            a=a+float(1.000000);
        elif i<0:
            b=b+float(1.000000);
        else:
            c=c+float(1.000000);
    a=a/(float(len(arr))-float(1));
    b=b/(float(len(arr))-float(1));
    c=c/(float(len(arr))-float(1));
    print ("{0:.6f}".format(c));
    print ("{0:.6f}".format(b));
    print ("{0:.6f}".format(a));
if __name__ == '__main__':
    n = int(input())

    arr = list(map(int, input().rstrip().split()))

    plusMinus(arr)

ожидаемый результат: - 0.500000 0.333333 0.166667

мой вывод: - 0.600000 0.400000 0.200000

1 Ответ

2 голосов
/ 02 июля 2019

Вам не нужно объявлять ваши значения как числа с плавающей запятой, просто позвольте python обрабатывать значения:

def plusMinus(arr):
    pos = 0
    neg = 0
    zer = 0

    for n in arr:
        if n > 0:
            pos += 1
        elif n < 0:
            neg += 1
        else:
            zer += 1

    print(format(pos / len(arr), '.6f'))
    print(format(neg / len(arr), '.6f'))
    print(format(zer / len(arr), '.6f'))
...