~~Title: As~~ varname As type / format The **As** operator performs two functions - conversion and formatting. ==Conversion: varname As type== Converts the variable //varname// to the specified //type//. Valid types are: |bool|boolean (true or false)| |int|signed 32-bit integer| |uint|unsigned 32-bit integer| |int64|signed 64-bit integer| |uint64|unsigned 64-bit integer| |double|double-precision floating point| |date|date/time| |str|string| |path|path| When converting from a string to a date, valid input formats are: * YYYY-MM-DD * YYYY-MM-DD HH:MM:SS * HH:MM:SS Times must be in 24-hour format, minutes and seconds are optional. If a time is specified on its own, today's date is assumed. ==Formatting: varname As format== Formats the variable //varname// using the specified formatting code. Various formatting operations are available. * Date/time values can be formatted using the **D#**, **T#** and **A#** [[..:command_reference:external_control_codes:codes_for_date_and_time|prefix codes]] * File size values using the codes shown below * Zero-padding to //p// places using **#p** or **%0p** * Right-justify to //p// places using **%p** * Left-justify to //p// places using **%-p** * Internal-justify: * For negative numbers to //p// places using **%_p** * For positive numbers **%+p** * Limit to //p// decimal places using **%.p** * Zero-pad to //p// decimal places with **%.0p** * Convert to hexadecimal using **%x** (lowercase) or **%X** (uppercase) Where it makes sense the above codes can be combined, e.g. **%_+8** would internal-justify a number to 8 places whether it was positive or negative. ===File size format=== Use **//value// as size** to automatically format a number as a file size using the default settings. You can also use the following keywords to control the units: |size|Automatic (bytes/KB/MB etc) with user-configured decimal/binary unit option| |szt|Automatic with traditional units (1 KB = 1024 bytes)| |szi|Automatic with binary units (1 KiB = 1024 bytes)| |szd|Automatic with decimal units (1 KB = 1000 bytes)| |bytes|Bytes| |kb|Kilobytes, traditional units| |mb|Megabytes, traditional units| |gb|Gigabytes, traditional units| |tb|Terabytes, traditional units| |pb|Petabytes, traditional units| |kib|Kilobytes, binary units| |mib|Megabytes, binary units| |gib|Gigabytes, binary units| |tib|Terabytes, binary units| |pib|Petabytes, binary units| |kbd|Kilobytes, decimal units| |mbd|Megabytes, decimal units| |gbd|Gigabytes, decimal units| |tbd|Terabytes, decimal units| |pbd|Petabytes, decimal units| * You use **%.//x//** to specify the number of decimal places, e.g. **%.3mib**. or **%.03kb** to zero-pad * Use **%^** to round up to the nearest kilobyte, e.g. **%^kb**. * Use **%0** in front of the "automatic" keywords to force 0 bytes to be formatted as kilobytes \\ //Example:// d = "2023-09-23" as date; Output(d as "D#dd-MMM-yyyy"); --> 23-Sep-2023 i = 1 as double / 3; Output(i as "%-.3"); --> 0.333 i = 183743933; output(i as "%.3kb"); --> 179,437.435 KB //See also:// [[format]]