dist/number.js

File

			(function(global, undefined) { var kafe = global.kafe, $ = kafe.dependencies.jQuery; kafe.bonify({name:'number', version:'1.0.0', obj:(function(){
			
				/**
				* ### Version 1.0.0
				* Additionnal manipulation methods for numbers.
				*
				* @module kafe
				* @class kafe.number 
				*/
				var number = {};
			
				/**
				* Converts a number to its roman numeral value.
				*
				* @method toRoman
				* @param {Number} number
				* @return {String} The roman numeral value.
				* @example
				*	kafe.number.toRoman(1954);
				*	// returns "MCMLIV"
				*/
				number.toRoman = function(n) {
			
					var
						// repeat string n times
						repeat = function (s,nb) {
							return new Array(Number(nb)+1).join(s);
						},
			
						data   = {M:1000,CM:900,D:500,CD:400,C:100,XC:90,L:50,XL:40,X:10,IX:9,V:5,IV:4,I:1},
						result = ''
					;
			
					// transform to int
					n = parseInt(n,10);
			
					// foreach numeral
					for (var i in data) {
						var matches = parseInt(n / data[i], 10);
						if (!!matches) {
							result += repeat(i, matches);
							n = n % data[i];
						}
					}
					return result;
				};
			
				/**
				* Gets the float precision of a given number.
				*
				* @method getPrecision
				* @param {Number} number
				* @return {Number} Amount of numbers after the radix point.
				* @example
				*	kafe.number.getPrecision(5.458);
				*	// returns 3
				* @example
				*	kafe.number.getPrecision(11);
				*	// returns 0
				*/
				number.getPrecision = function(n) {
					var _precision = (n + '').split('.')[1];
					return !!_precision ? _precision.length : 0;
				};
			
				/**
				* Modifies, if needed, a number to only allow a miximum float precision.
				*
				* @method trimPrecision
				* @param {Number} number
				* @param {Number} precision Maximum amount of numbers after the radix point.
				* @return {Number} The modified number
				* @example
				*	kafe.number.trimPrecision(5.458, 2);
				*	// returns 5.45
				* @example
				*	kafe.number.trimPrecision(5.458, 0);
				*	// returns 5
				* @example
				*	kafe.number.trimPrecision(5.458, 6);
				*	// returns 5.458
				*/
				number.trimPrecision = function(n, precision) {
					return Math.floor(n * Math.pow(10, precision)) / Math.pow(10, precision);
				};
			
				/**
				* Multiply two numbers while avoiding the javascript multiplication irregularities.
				*
				* @method product
				* @param {Number} number
				* @param {Number} factor The factor causing the javascript calculation irregularity.
				* @return {Number} Product of the equation.
				* @example
				*	3 * 5.3
				*	// returns 15.8999999
				* @example
				*	kafe.number.product(3, 5.3);
				*	// returns 15.9
				*/
				number.product = function(n, factor) {
					var _power = Math.pow(10, number.getPrecision(factor));
					return (n * (factor * _power)) / _power;
				};
			
			
				return number;
			
			})()}); })(typeof window !== 'undefined' ? window : this);