AddThousandsSeparators
From SA-MP Wiki
Contents |
Information
This function takes an integer, and returns a string formatted with commas (','), to make it easier to read. This can be very useful for scripts that use money, such as a lottery script.
Parameters:(number)
number | The integer you wish to format |
Return Values:
A string with commas placed after every three numbers
AddCommasToInt(1234567);
Example
AddCommasToInt(1234567); // Returns 1,234,567 AddCommasToInt(1234); // Returns 1,234 AddCommasToInt(123); // Returns 123
Definition
/** * Adds thousands separators to a number and returns the result as a string. It * seems only logical to start from the back and count groups of 3 until the * front is reached. Works with any positive or negative 32 bit integer. * * @param int number value to add seperators to * @param string separator the separator char * @return string the formatted string * @author Vince */ AddThousandsSeparators(number, const separator[] = ",") { new output[15]; // longest possible output given 32 bit integers: -2,147,483,648 format(output, sizeof(output), "%d", number); for(new i = strlen(output) - 3; i > 0 && output[i-1] != '-'; i -= 3) { strins(output, separator, i); } return output; }
Other versions
Version by Puffmac. Edited by Kar and WestSide
stock AddCommasToInt(number) { new tStr[16]; // Up to 9,999,999,999,999 new number2 = number; if(number < 0) number = number * -1; format(tStr, sizeof(tStr), "%d", number); if(strlen(tStr) < 4) return tStr; new iPos = strlen(tStr), iCount = 1; while(iPos > 0) { if(iCount == 4) { iCount = 0; strins(tStr, ",", iPos, 1); iPos++; } iCount++; iPos--; } if(number2 < 0) format(tStr, sizeof(tStr), "-%s", tStr); return tStr; }
Version by DeimoS
stock AddCommasToInt(number, delimiter[2] = ".") { new int_string[10+3+1+1]; /* The maximum value for the Integer: "-2147483647" to "2147483647" Consequently, transmit greater than this value as a parameter impossible (only if we make "number" parameter as string) Declare 10 cells for the number and 3 cells for the delimiters for the largest possible number and 1 cell for minus and 1 and cell for the null-character. */ format(int_string, sizeof(int_string), "%d", number >= 0 ? number : -number); //If the number is positive - we write it in the usual way. Otherwise, convert it to a positive number, adding a minus new value = strlen(int_string); // Write in "i" length of the string with the our number switch(value) { case 4..6: // If the number has passed from 4 up to 6 characters, add a delimiter strins(int_string, delimiter, value-3,1); case 7..9: // From 7 to 9 characters - two delimiters strins(int_string, delimiter, value-3,1), strins(int_string, delimiter, value-6,1); case 10..12: // From 10 to 12 characters - three delimiters strins(int_string, delimiter, value-3,1), strins(int_string, delimiter, value-6,1), strins(int_string, delimiter, value-9,1); } if(number < 0) strins(int_string, "-", 0); // If the number is negative, it return him minus return int_string; }