Home modules.gotpike.org
Username: Password: [Create Account]
[Forgot Password?]

Modules

ADT
Database
GTK2
GUI
IP
PiJAX
Public
Sql
Stdio
Subversion
System
Tools
Xosd
lua
v4l2
wx

Recent Changes

Public.Parser.XML2 1.50
Public.ZeroMQ 1.1
Public.Template.Mustache 1.0
Public.Protocols.XMPP 1.4
Sql.Provider.jdbc 1.0

Popular Downloads

Public.Parser.JSON2 1.0
Public.Parser.JSON 0.2
GTK2 2.23
Public.Web.FCGI 1.8
Public.Parser.XML2 1.48


Module Information
Public.L10n
Viewing contents of Public_L10n-0.1/module.pmod.in

class Number
{
	float _num = 0.0;
	int _decimals = 2;
	int _strip_decimals_zeroes = 0;
  string _decimals_sep=".";
  string _thousands_sep=",";

	void create(float num)
	{
		_num = num;
		return;
	}

	void set_decimals(int decimals)
	{
    _decimals = decimals;
		return;
	}

	void set_decimals_sep(string decimals_sep)
	{
    _decimals_sep = decimals_sep;
		return;
	}

	void set_thousands_sep(string thousands_sep)
	{
    _thousands_sep = thousands_sep;
		return;
	}

	void set_strip_decimals_zeroes(int strip_decimals_zeroes)
	{
		_strip_decimals_zeroes = strip_decimals_zeroes;
	}

	string format()
	{
    string out = "";

		// "%.2f"
		string out_format=sprintf("%%.%df",_decimals);
    // "12345.678900"
    string n = sprintf(out_format, _num);

    // ({ "12345", "678900" })
    array parts = n/".";

		// "12.345"
		out += group_thousands(parts[0], _thousands_sep);

		// Do we have decimals?
		if(sizeof(parts)==2)
		{
			// "678900"
			string dec = parts[1];
			if(_strip_decimals_zeroes)
			{
				// "6789"
				int i = sizeof(dec);
				i--;
				while(dec[i..i]=="0")	
				{
					dec=dec[0..i-1];
					i--;	
				}
			}
			// "678.9"
			dec = group_thousands(dec, _thousands_sep, 0);
			// "12.345,678.9"
			out += _decimals_sep+dec;
		}

    return out;
	}

}

string group_thousands(string data, string separator, void|int doreverse)
{
	string out = "";
	array data_parts = ({ });

	int _doreverse = 1;
	if(!zero_type(doreverse) && intp(doreverse))
		_doreverse = doreverse;

	if(_doreverse)
	{
    // "54321"
    data = reverse(data);
	}

  // ({ "345", "12"})
  int size=sizeof(data);
  for(int i=0; isize-1)
			if(_doreverse)
	      data_parts += ({ reverse(data[i..]) });
			else
	      data_parts += ({ data[i..] });
    else
			if(_doreverse)
	      data_parts += ({ reverse(data[i..i+2]) }) ;
			else
	      data_parts += ({ data[i..i+2] }) ;
  }

	if(_doreverse)
	{
	  // ({ "12", "345" })
	  data_parts = reverse(data_parts);
	}

  // "12,345"
  out = data_parts*separator;

  return out;
}



gotpike.org | Copyright © 2004 - 2019 | Pike is a trademark of Department of Computer and Information Science, Linköping University