Dans notre application, nous vivons actuellement avec l'héritage d'une décision de stocker toutes les données d'ingénierie dans notre base de données dans SI. Je crains que nous ne courions le risque de ne pas avoir une précision et une précision suffisantes dans notre base de données ou dans les types numériques .NET. Je suis également inquiet que nous puissions voir des artefacts de mathématiques à virgule flottante (bien que ce soit probablement une question à part entière). Par exemple, les données source peuvent avoir été une quantité de pression exprimée (et lue depuis un service tiers) en Psi (livres par pouce carré). Les ingénieurs auront choisi cette unité de mesure parce que (pour la quantité exprimée) cela tendra à donner des nombres faciles à digérer, lisibles par l'homme sans exiger de notation scientifique. Lorsque nous "standardisons" le nombre, c'est-à-dire lorsque nous convertissons cette quantité pour notre propre persistance, nous pouvons la convertir en Pa (Pascals), ce qui nécessite de la multiplier ou de la diviser par un autre nombre potentiellement important.Dans quelles unités de mesure stockez-vous les données d'ingénierie?
Nous finissons souvent par stocker des nombres très grands ou très petits, et pire - nous pourrions faire d'autres calculs sur ces nombres. À l'heure actuelle, nous utilisons ORACLE float et System.Double.
Qu'en pensent les gens?
MISE À JOUR
D'autres recherches ont mis au jour Units of Measure support dans la langue à venir F # (en CTP que j'écris).
Il semble que nous serons en mesure d'avoir F # comprendre l'entrée d'utilisateur tels que:
9.81<n/s^2> // an acceleration
Nous allons également pouvoir créer nos propres unités dérivées et les systèmes unitaires.
Cela suppose que la précision de la mesure est connue. D'après mon expérience, ce n'est souvent pas le cas. – Treb
@Treb: D'accord - différents domaines de problèmes ont des exigences et des hypothèses différentes. Parfois, il s'agit de faire des hypothèses conservatrices ou de limiter les hypothèses de précision à la mesure la moins précise. –