vacunas vacunarse riesgo pros por negativos negativo las factores enfermedades efectos desventajas contras consecuencias beneficios .net currency financial

vacunarse - Tipo de datos de dinero para.NET?



lo negativo de las vacunas (8)

Buscando un buen tipo de datos de dinero para .NET que admita monedas y tipos de cambio (con comportamiento y operaciones relacionadas).

  • Nota: Comencé a buscar el código fuente visto en forma impresa en el libro Test-Driven Development By Example del autor Kent Beck: desarrolla un buen concepto monetario. No se puede encontrar la fuente completa en línea. El libro no contiene una lista singular, sino que desarrolla el código fuente durante la duración del libro.

Aunque el libro no profundiza, también me gustaría que la clase Money soporte diferentes mecanismos de redondeo porque eso también varía entre las instituciones financieras de todo el mundo.

Edición 1: Aclaraciones

Por "clase de dinero" me refiero a un tipo de datos .NET que puedo usar para respaldar el dinero y sus operaciones, completo con soporte de divisas y cálculos de la tasa de cambio. Algo así es una abstracción de nivel superior y podría usar internamente un tipo de datos primitivo. También podría depender de un conjunto de clases como: Money, ExchangeRate, Bank, etc.

Puede ser un tipo de valor (es decir, struct) o un tipo de referencia (es decir, clase), pero de cualquier manera estaría completo y admitiría las características mencionadas anteriormente.

Editar 2: tipo de datos Objectives of Money

(Esto también muestra por qué un decimal en bruto, int u otro tipo primitivo no será suficiente para todas las necesidades de dinero)

Los objetivos de un tipo de datos de Money serían:

  • Funciones de seguridad (es decir, evitar la aritmética en diferentes tipos de moneda).
  • Almacene el tipo de moneda con el valor (es decir, AUD, US, DKK).
  • Almacene detalles de formateo (es decir, agrupamiento decimal, símbolos de moneda, etc.).
  • Proveedores de conversión (por ejemplo, tipo de cambio) para ayudar a completar la solución.
  • Reduzca varias monedas en una expresión para lograr un resultado.

Nota: Se pueden cargar valores de datos variables como las tasas de cambio desde una fuente externa y se pueden usar. Esta pregunta no implica que algo dinámico esté codificado en el concepto de Dinero.


Echa un vistazo aquí:

http://blogs.msdn.com/lucabol/archive/2008/12/04/financial-functions-for-net-released.aspx

Proporciona una biblioteca .NET que replica todas las funciones financieras de Excel.

Hacer conversión de moneda es complicado, porque obviamente cambia continuamente, por lo que los valores codificados serán más o menos inútiles. Sin embargo, es posible que pueda utilizar un servicio web para acceder a las tasas de cambio actualizadas. This parece un buen comienzo. Mejor aún, una interfaz de estilo REST para el mismo convertidor:

http://www.webservicex.com/CurrencyConvertor.asmx/ConversionRate?FromCurrency=GBP&ToCurrency=EUR

Entonces eso produce la tasa de conversión de libras esterlinas a euros.


Entiendo tus puntos sobre el beneficio de tener una capa de abstracción sobre el dinero aquí. Sin embargo, mi punto de vista sobre el dinero y sus "operaciones" es bastante borroso. Para otras cosas, como File , es claro para mí que debe haber operaciones Open , Read , Write , Close . Pero para Money, no puedo pensar mucho más que operaciones básicas de matemáticas (+, -, *, /)

Una de las finanzas cuantitativas de C ++ que sé contiene esta abstracción de dinero ( http://quantlib.org/reference/class_quant_lib_1_1_money.html .) Pero se puede ver claramente que esta es una envoltura muy delgada que proporciona sobrecargas de operadores básicos y conversión de unidades sobre Decimal.

En la mayoría de los casos, creo que el decimal puede cumplir su requisito. Si hay una operación Money específica que necesita para respaldar, creo que está bien implementar sus propias clases.


Martin Fowler considera el dinero como un caso especial de "Cantidad", en segundo lugar, cree que el Tipo de Datos correcto para el dinero debe ser el Entero grande. Y él tiene un punto.

Cantidad y patrón de dinero por Martin Fowler


Si buscas patrones, puedes echarle un vistazo a Joda Money . Es Java, pero debería darle algunas ideas sobre una API. La implementación de AC # sería mucho menos prolija debido a la sobrecarga del operador.


Soy el autor de NMoneys que creo que podría venir a mano. Todavía no ha sido "oficialmente lanzado", pero cambiará muy poco hasta que lo haga.


probablemente descubras que crear tu propia clase dará como resultado la mejor solución.


NodaMoney proporciona una biblioteca que trata a Money como un ciudadano de primera clase en .NET y maneja todas las partes feas como las monedas y el formato.

Cumple con las monedas en ISO 4217. Y es la contraparte .NET de la biblioteca java JodaMoney.


Tipo de datos monetarios @ The Code Project

http://www.codeproject.com/KB/vb/moneyDatatype.aspx

El autor dice un problema similar:

Como parte de una aplicación reciente, me di cuenta de que la falta de .NET es para el soporte de divisas, no me malinterpreten, hay muchas "piezas" pero falta el pegamento para todos los artículos , por lo que este artículo es una respuesta a eso.

y cumple objetivos

mis principales objetivos se convirtieron

  • Almacene el tipo de moneda con el valor (es decir, AUD, US, DKK).
  • Almacene detalles de formateo (es decir, agrupamiento decimal, símbolos de moneda, etc.).
  • Los proveedores de conversión, no quería codificarlo duro, ya que es un tipo de datos y no una solución.
  • Características de seguridad del desarrollo (es decir, evitar la aritmética en diferentes tipos de moneda).

Hasta ahora este es el código .NET más cercano a lo que estoy buscando. Cumple con la mayoría de los requisitos de Money.

Si alguien tiene algo mejor, sería muy apreciado.