2008-10-01 15 views

Respuesta

16

decimal

No perderá precisión debido al redondeo.

+0

Al encontrar esta pregunta más adelante, encontré esta respuesta más útil WRT Parte de la pregunta de SQL Server: http://stackoverflow.com/questions/158966/what-types-should-i-use-to-represent-percentages-in-c-and-sql-server/159780#159780. Parecería que la respuesta es decimal como CLR y flotante para el tipo de SQL Server, al menos si es probable que almacene porcentajes fraccionarios. –

1

Depende de la precisión que necesite. Si no necesita decimales, incluso podría usar tiny int. Pero generalmente los flotadores son buenos si necesitas algunos decimales. Yo uso LLBLGen y flotadores para% 's

-2

Depende de para qué los uses.

si se trata de una pantalla, un int podría funcionar bien y ser más rápido que un flotador. Si se trata de matemáticas infrecuentes, un int todavía sería bueno (o incluso un corto, en cualquier caso).

Si está haciendo un montón de matemáticas, entonces una flotación probablemente sea la mejor, en cuanto a rendimiento.

Por supuesto, a menos que esté haciendo MUCHA manipulaciones de los porcentajes, en realidad no importará al final, en cuanto a rendimiento, dada la velocidad del procesador moderno.

EDITAR: Por supuesto, 'int' asume que solo está usando porcentajes estrictos de números enteros. Si no lo eres, SIEMPRE serías mejor con float o dec.

+0

La pregunta no fue acerca de int vs float ... También dice que los ints son más rápidos, pero también dicen que los flotantes son mejores para el rendimiento. –

+0

@StuartBranham: Y si lo nota, di las situaciones en las que ambas son ciertas. Y un porcentaje se puede almacenar como int (75, lo que significa 75%) o float (.75 ​​representa 75%, o 75.5 significa 75.5%, o .755 significa 75.5%). Para un simple almacenamiento y visualización, un int es más rápido. Si necesita trabajar con los números, lo mejor es un flotador: puede almacenar lugares decimales y funciones matemáticas integradas que lo hacen muy eficiente. – Jeff

1

Con respecto a SQL Server, es raro que almaceno un porcentaje. 9 veces de cada 10, desea almacenar los datos que se utilizan para derivar el porcentaje y calcular según sea necesario.

Si y solo si tiene datos empíricos que muestran que el cálculo es demasiado lento, entonces guárdelo. Use un decimal como se sugirió anteriormente para evitar problemas de redondeo.

+0

esto podría ser específico del dominio. Muchas veces no tendrá los datos que calcule el porcentaje, como que un usuario ingrese el% de un color para usar – mattlant

+0

Como dijo @mattlant, los porcentajes que necesito almacenar son porcentajes de dominio como el 17,5% de IVA y el 40% de descuento etc. –

2

En gran medida depende de la precisión que necesite; Lo más importante es ser consistente y claro. Tome precauciones para asegurarse de que sea coherente en todo el uso del campo ... es decir, no lo almacene como un flotador (n = .5) y luego intente reconstituirlo como si fuera un número entero en otra parte de su código (mipercentaje = n/100). Siempre que se asegure de no hacer eso y no esté construyendo un láser que requiera 30 dígitos significativos de precisión, simplemente escoja su sabor favorito entre int, doble o lo que sea float s su bote. Waka Waka.

3

La respuesta depende de la aplicación.

Otros han señalado que el decimal es mejor que el flotante para representar un valor exacto. Pero a veces es mejor utilizar un flotador para aumentar la precisión (por ejemplo, un conjunto de pesos calculados que suman 100% probablemente esté mejor representado como un flotador)

Cuestiones relacionadas