Comments (2)
It is not currently possible. I think implementing a method like toPrefix
could fill the gap.
For instance, someqty.toPrefix('c')
would return converted quantity using centi as prefix. When calling toPrefix
without parameter, it would convert to the same units without prefix (for instance, Qty('30 mW').toPrefix(); // 0.03 W
).
from js-quantities.
I tried to write it myself and it seems to work okay.
Right now, there is no check implemented if the quantity is unit-less or not. Also, the prefix must come first in the numerator of the unit. But I think this is the only way prefixes are used, right?
To use the method toPrefix(prefix)
:
Qty('10 kW').toPrefix() // outputs quantity with '10000 W'
Qty('10 kW').toPrefix('M') // outputs quantity with '0.01 MW'
I have used three external functions as I needed them for my version of toEng() as well.
Here is my code:
// Get prefix from unit, eg. 'kW' --> 'k'
function get_prefix(qty) {
var prefix;
if (UNITS[qty.numerator[0]][2] == "prefix") {
prefix = UNITS[qty.numerator[0]][0][0];
}
else {
prefix = "";
}
return prefix;
}
// Get unit base, eg. 'kW' --> 'W'
function get_unit_base(qty) {
var unit_base, prefix;
prefix = get_prefix(qty);
if (prefix.length === 1) {
unit_base = qty.units().substr(1);
}
else {
unit_base = qty.units();
}
return unit_base;
}
// Convert unit to defined prefix,
// eg. no prefix: '0.1 kW' --> '100 W' or prefix 'm': '0.35 W' --> '350 mW'
function convert_prefix(qty, prefix) {
var prefix, unit_base, target, qty, q;
if (prefix == undefined || prefix == null || prefix == 1) {
prefix = "";
}
unit_base = get_unit_base(qty);
target = Qty(prefix+unit_base);
q = divSafe(qty.baseScalar, target.baseScalar);
target = Qty({"scalar": q, "numerator": target.numerator, "denominator": target.denominator});
return target;
}
// ... //
assign(Qty.prototype, {
// ... //
toPrefix: function(prefix) {
return convert_prefix(this,prefix);
},
// ... //
}
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.