Su porcentaje no es en realidad 0,05. Es un valor cerrar a 0.05 ... y probablemente un poco más de 0.05. Por lo tanto, cuando se multiplica por 2600, obtienes un valor de poco más de 130.0 ... que luego se "ceilinge" a 131.0.
Utilizando una pequeña herramienta que escribí hace un tiempo (disponible en this page sobre los tipos de punto flotante binario .NET) parece que el valor real float
más cercano a 0,05 es 0,0500000007450580596923828125. Para dobles, es 0.05000000000000000277555756156289135105907917022705078125.
Moral de la historia: no use float
para este tipo de cosas - use decimal
. O si solo está tratando de representar un porcentaje, si está bien que realmente tenga una precisión de uno por ciento, use un valor entero de 0-100.
yo no entiendo su pregunta, pero asegúrese de que Math.Ceiling() quiere un parámetro decimal o doble –
¿Cuál es el problema aquí? processingFee equivale a 131, lo que parece correcto. –
@Serkan - Math.Ceiling acepta decimal y doble. – GenericTypeTea