Im utilisant le module pint dans un projet. Les objets de mon projet gèrent les données numériques en tant que décimales. Quand je mets simples unités de pinte à une décimale, cela fonctionne:Python - pint - Puis-je définir le type par défaut sur Decimal?
>>> import pint
>>> from decimal import Decimal as D
>>> ureg = pint.UnitRegistry()
>>> D(10) * ureg.kN
<Quantity(10, 'kilonewton')>
Mais, si je tente d'ajouter une deuxième unité, il se casse. Bâtiment kilonewtons * mètres dans cet exemple:
>>> D(10) * ureg.kN * ureg.m
TypeError: unsupported operand type(s) for *: 'decimal.Decimal' and 'float'
J'utilise ce hack:
>>> a = D(1) * ureg.kN
>>> b = D(1) * ureg.m
>>> unit_kNm = a * b
>>> D(10) * unit_kNm
<Quantity(10, 'kilonewton * meter')>
Je comprends pourquoi cela arrive. Je suis à la recherche d'une solution pour installer pinte comme je veux.
Ce fut ma première idée, mais: « >>> import décimal >>> D (10) * ureg.kN * decimal.Decimal (ureg.m) Tra ceback (appel le plus récent en dernier): Fichier « », ligne 1, en TypeError: conversion d'une unité à décimale est pas prise en charge « » –
echefede
essayer de le convertir en 'float' d'abord, puis. –
Ne fonctionne pas. Un objet pinte est une unité de mesure et une valeur numérique. Vous ne pouvez pas lancer l'objet entier. Peut être un autre moyen. – echefede