/**
* Number Example in TypeScript
* ----------------------------
* Demonstrates:
* - Creating numbers
* - Number methods
* - Number constants
* - Parsing strings
* - Formatting values
* - Validation
* - Math operations
* - Custom functions
*/
/*
Useful Number Constants
-----------------------
Number.MAX_VALUE;
Number.MIN_VALUE;
Number.MAX_SAFE_INTEGER;
Number.MIN_SAFE_INTEGER;
Number.POSITIVE_INFINITY;
Number.NEGATIVE_INFINITY;
*/
/*
Common operations
-----------------
Number()
Number.isInteger()
Number.isFinite()
Number.isNaN()
toFixed()
toPrecision()
toString()
Math.round()
Math.floor()
Math.ceil()
Math.sqrt()
Math.random()
*/
"use strict";
/**
* Calculates the average of an array of numbers.
*
* @param numbers Array of numbers
* @returns Average value
*/
function calculateAverage(numbers: number[]): number {
if (numbers.length === 0) {
return 0;
}
const sum: number = numbers.reduce(
(total: number, current: number): number =>
total + current,
0
);
return sum / numbers.length;
}
/**
* Formats a number as US currency.
*
* @param amount Monetary value
* @returns Formatted currency string
*/
function formatCurrency(amount: number): string {
return amount.toLocaleString("en-US", {
style: "currency",
currency: "USD"
});
}
/**
* Returns a random integer between min and max (inclusive).
*
* @param min Minimum value
* @param max Maximum value
* @returns Random integer
*/
function getRandomInteger(
min: number,
max: number
): number {
return Math.floor(
Math.random() * (max - min + 1)
) + min;
}
// ----------------------------------------------------
// Creating Numbers
// ----------------------------------------------------
const integerValue: number = 100;
const decimalValue: number = 99.95;
console.log("=== Numbers ===");
console.log(integerValue);
console.log(decimalValue);
// ----------------------------------------------------
// Number Constants
// ----------------------------------------------------
console.log("\n=== Number Constants ===");
const maxValue: number = Number.MAX_VALUE;
const minValue: number = Number.MIN_VALUE;
console.log("MAX_VALUE:", maxValue);
console.log("MIN_VALUE:", minValue);
console.log(
"MAX_SAFE_INTEGER:",
Number.MAX_SAFE_INTEGER
);
console.log(
"MIN_SAFE_INTEGER:",
Number.MIN_SAFE_INTEGER
);
// ----------------------------------------------------
// Converting Strings to Numbers
// ----------------------------------------------------
console.log("\n=== Number Conversion ===");
const textValue: string = "123.45";
const convertedNumber: number =
Number(textValue);
const integerNumber: number =
parseInt(textValue, 10);
const decimalNumber: number =
parseFloat(textValue);
console.log(convertedNumber);
console.log(integerNumber);
console.log(decimalNumber);
// ----------------------------------------------------
// Number Validation
// ----------------------------------------------------
console.log("\n=== Validation ===");
const score: number = 100;
const invalidValue: number = NaN;
console.log(
"Is Integer:",
Number.isInteger(score)
);
console.log(
"Is Finite:",
Number.isFinite(score)
);
console.log(
"Is NaN:",
Number.isNaN(invalidValue)
);
// ----------------------------------------------------
// Formatting Numbers
// ----------------------------------------------------
console.log("\n=== Formatting ===");
const price: number = 1234.56789;
console.log(price.toFixed(2));
console.log(price.toPrecision(6));
// ----------------------------------------------------
// Math Functions
// ----------------------------------------------------
console.log("\n=== Math Functions ===");
const value: number = 4.75;
console.log("Round:", Math.round(value));
console.log("Floor:", Math.floor(value));
console.log("Ceil :", Math.ceil(value));
console.log("Power:", Math.pow(2, 3));
console.log("Square Root:", Math.sqrt(25));
// ----------------------------------------------------
// Currency Formatting Function
// ----------------------------------------------------
console.log("\n=== Currency ===");
const salary: number = 5000.5;
console.log(formatCurrency(salary));
// ----------------------------------------------------
// Average Function Example
// ----------------------------------------------------
console.log("\n=== Average ===");
const grades: number[] = [
85,
90,
95,
88,
92
];
const averageGrade: number =
calculateAverage(grades);
console.log("Grades:", grades);
console.log("Average:", averageGrade);
// ----------------------------------------------------
// Random Numbers
// ----------------------------------------------------
console.log("\n=== Random Integer ===");
const randomNumber: number =
getRandomInteger(1, 10);
console.log(randomNumber);
// ----------------------------------------------------
// Arithmetic Operations
// ----------------------------------------------------
console.log("\n=== Arithmetic ===");
const a: number = 10;
const b: number = 5;
const addition: number = a + b;
const subtraction: number = a - b;
const multiplication: number = a * b;
const division: number = a / b;
const remainder: number = a % b;
console.log("Add:", addition);
console.log("Subtract:", subtraction);
console.log("Multiply:", multiplication);
console.log("Divide:", division);
console.log("Remainder:", remainder);
// ----------------------------------------------------
// Summary Example
// ----------------------------------------------------
console.log("\n=== Summary ===");
const baseSalary: number = 70000;
const annualBonus: number = 8000;
const totalCompensation: number =
baseSalary + annualBonus;
console.log(
`Total Compensation: ${formatCurrency(
totalCompensation
)}`
);
/*
run:
=== Numbers ===
100
99.95
=== Number Constants ===
MAX_VALUE: 1.7976931348623157e+308
MIN_VALUE: 5e-324
MAX_SAFE_INTEGER: 9007199254740991
MIN_SAFE_INTEGER: -9007199254740991
=== Number Conversion ===
123.45
123
123.45
=== Validation ===
Is Integer: true
Is Finite: true
Is NaN: true
=== Formatting ===
1234.57
1234.57
=== Math Functions ===
Round: 5
Floor: 4
Ceil : 5
Power: 8
Square Root: 5
=== Currency ===
$5,000.50
=== Average ===
Grades: [ 85, 90, 95, 88, 92 ]
Average: 90
=== Random Integer ===
2
=== Arithmetic ===
Add: 15
Subtract: 5
Multiply: 50
Divide: 2
Remainder: 0
=== Summary ===
Total Compensation: $78,000.00
*/