Comments (5)
No, there's not (publicly at least). It really seems to be a bug. Units are meant to be automatically simplified.
Qty('3 lbs').div(Qty('2 kg')).toString(); // -> "0.68..." as intended
Qty('3 lbs*m').div(Qty('2 kg')).toString(); // -> "1.5 lbs*m/kg", wrong scalar and units
I'll try to track down that bug. Thank you for reporting.
from js-quantities.
Any progress on this ?
from js-quantities.
BTW - If you want to force the conversion manually, both of the following work (they generate a new Qty object with the units set to 'kg'.
var amount = rate.mul(dt).to('kg')
var amount = rate.mul(dt).to(rate.numerator[0].slice(1,-1))
That said, I dont think units should be automatically simplified in all cases. Ideally, we want to do all the math one shot. There's nothing inherently wrong with storing long arrays of numerators and denominators as long as it's easy to simplify the Qty when needed.
from js-quantities.
Division isn't simplifying at all, which is what I thought would be a huge selling point of this library.
> Qty('6.67259e-11 N*m2/kg2').toBase().toString()
'6.67259e-11 kg*m3/s2*kg2'
It should be '6.67259e-11 m3/s2*kg'
instead.
from js-quantities.
You can use something like this, if you want full normalization:
function toBase(x) {
const y = x.toBase();
const ORDER = [
"<kilogram>",
"<meter>",
"<second>",
"<ampere>",
"<kelvin>",
"<mole>",
"<candela>",
];
const num = new Map();
const den = new Map();
y.numerator.forEach((unit) => {
num.set(unit, 1 + (num.get(unit) || 0));
});
y.denominator.forEach((unit) => {
den.set(unit, 1 + (den.get(unit) || 0));
});
const numSimpl = [];
const denSimpl = [];
ORDER.forEach((unit) => {
const n = (num.get(unit) || 0) - (den.get(unit) || 0);
if (n > 0) {
for (let i = 0; i < n; i++) {
numSimpl.push(unit);
}
} else if (n < 0) {
for (let i = 0; i > n; i--) {
denSimpl.push(unit);
}
}
});
return Qty({ scalar: y.scalar, numerator: numSimpl, denominator: denSimpl });
}
which gives
> toBase(Qty('6.67259e-11 N*m2/kg2')).toString()
'6.67259e-11 m3/kg*s2'
from js-quantities.
Related Issues (20)
- Conversion of compound units gives wrong result
- getSystems() It would be useful to tag/group the unit names by their SI, Imperial or other system and allow conversion toSystem('imperial')
- Possibility to add a method qty.getUnit() ? HOT 1
- Dividing by temperatures HOT 1
- Dividing by temperature HOT 1
- add metric ton symbol "t" HOT 1
- surfaces (m², km², hectares) HOT 1
- compatibility with Unified Code for Units of Measure HOT 1
- Translation of units into different languages
- no power operators? HOT 1
- Human readable value in contrained range HOT 2
- js-quantities is incompatible with sugarjs and prototypejs
- Lacking precision necessary for required comparisons HOT 10
- No converter for Miliradians
- Swift Converter error: Incompatible units
- Values formatted with group separators do not parse
- Pretty unit output
- Publish new version to npm HOT 1
- Can't import the ES module in Angular HOT 4
- Rounding Issues when converting Millimeter to Centimeter HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from js-quantities.