Giter Club home page Giter Club logo

Comments (2)

gentooboontoo avatar gentooboontoo commented on May 24, 2024

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.

librilex avatar librilex commented on May 24, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.