Ich habe Code für die Berechnung der Teilmenge Summe geschrieben, die wie ein Charme für ganzzahlige Werte funktioniert, aber für Float-Werte gibt es kein Ergebnis.Summe der Subsets für Float-Werte funktioniert nicht
Code:
import numpy as np
array = np.array([15,1,4,6,3,10,4.2])
num = 8.2
def subsetsum(array,num):
if num == 0 or num < 1:
return None
elif len(array) == 0:
return None
else:
if array[0] == num:
return [array[0]]
else:
with_v = subsetsum(array[1:],(num - array[0]))
if with_v:
return [array[0]] + with_v
else:
return subsetsum(array[1:],num)
print('\nList of Values : ',array)
print('\nSum Desired : ',num)
print('\nValues that add up to sum : ',subsetsum(array,num))
Ausgang für Integer-Werte
List of Values : [15 1 4 6 3 10 4]
Sum Desired : 8
Values that add up to sum : [1, 4, 3]
Ausgang für Float-Werte
List of Values : [ 15. 1. 4. 6. 3. 10. 4.2]
Sum Desired : 8.2
Values that add up to sum : None
Wie kann ich mit Float-Werten arbeiten?
Die kurze Antwort ist, können Sie nicht, ohne zusätzliche Arbeit, weil dezimale Fließkomma-Literale Gleitkommazahlen nicht genau darstellen. Sie können versuchen, https://docs.python.org/3.6/library/decimal.html, die auch einige der Probleme berührt – pvg
Könnten Sie angeben, welche zusätzliche Arbeit ich tun muss, um meine Lösung zu erreichen? –
Was ist der erwartete O/P für den Float-Fall? – Divakar