Python'da bir liste veya ondalık sayı dizim var. Bunları parasal tutarlar olduğu için en yakın 2 ondalık basamağa yuvarlamaya ihtiyacım var. Ancak, korunacak toplam toplama ihtiyacım var, yani 2 ondalık basamağa yuvarlanmış orijinal dizinin toplamı, dizinin yuvarlatılmış elemanlarının toplamına eşit olmalıdır.Bir Python sayı listesi döndürün ve toplamı koruyun
İşte benim kod şimdiye kadar var:
myOriginalList = [27226.94982, 193.0595233, 1764.3094, 12625.8607, 26714.67907, 18970.35388, 12725.41407, 23589.93271, 27948.40386, 23767.83261, 12449.81318]
originalTotal = round(sum(myOriginalList), 2)
# Answer = 187976.61
# Using numpy
myRoundedList = numpy.array(myOriginalList).round(2)
# New Array = [ 27226.95 193.06 1764.31 12625.86 26714.68 18970.35 12725.41 23589.93 27948.4 23767.83 12449.81]
newTotal = myRoundedList.sum()
# Answer = 187976.59
Ben toplamı 187.976,61 de olduğunu benim yeni yuvarlatılmış dizi böyle değiştiren verimli bir yol gerekir. Yuvarlatılmış girişler ve orijinal girişler arasında en büyük farkın olması nedeniyle, 2 pens farkının 7 ve 6. maddelere uygulanması gerekir.
Herhangi bir fikrin var mı? kayan noktalı sayıların kullanılmasıyla ilgili tüm uyarılar ile
Muhtemelen kayan noktalı sayıları kullanarak temsil etmek olmamalıdır parasal tutarlar. "0.10" gibi çok sayıda sayı vardır, bu "float" tam olarak temsil edemez. – NPE
Numpy çözümünüzde neyin var? Eğer doğru bir şekilde anlarsam, aradığınız cevap budur ... – mgilson
@NPE: Bu yuvarlak değil mi? Yani, 0.1 sayısındaki herhangi bir belirsizlik, makine hassasiyeti ile karşılaştırılabilir olmalı, değil mi? – BenDundee