You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

51 lines
1.5 KiB

/*
* This is a AssemblyScript port of the original Java version, which was written by
* Gil Tene as described in
* https://github.com/HdrHistogram/HdrHistogram
* and released to the public domain, as explained at
* http://creativecommons.org/publicdomain/zero/1.0/
*/
const leftPadding = (size: i32, input: string): string => {
if (input.length < size) {
input.padStart(size - input.length);
return " ".repeat(size - input.length) + input;
}
return input;
};
export const integerFormatter = (size: i32, integer: u64): string => {
return leftPadding(size, integer.toString());
};
export class IntegerFormatter {
constructor(private size: i32) {}
format(integer: u64): string {
return leftPadding(this.size, integer.toString());
}
}
export class FloatFormatter {
constructor(private size: i32, private fractionDigits: i32) {}
format(float: f64): string {
const intergerPart = <u64>Math.floor(float);
const digits = Math.pow(10, this.fractionDigits);
const floatPart = <u64>(
Math.round(float * digits - <f64>intergerPart * digits)
);
let floatPartString = floatPart.toString();
if (floatPartString.length < this.fractionDigits) {
floatPartString += "0".repeat(
this.fractionDigits - floatPartString.length
);
}
let result = intergerPart.toString() + "." + floatPartString;
if (result.length < this.size) {
result = " ".repeat(this.size - result.length) + result;
}
return result;
}
}