diff options
Diffstat (limited to 'src/stdlib')
| -rw-r--r-- | src/stdlib/nums.c | 8 | ||||
| -rw-r--r-- | src/stdlib/nums.h | 2 |
2 files changed, 10 insertions, 0 deletions
diff --git a/src/stdlib/nums.c b/src/stdlib/nums.c index 98f7b509..93e2b21b 100644 --- a/src/stdlib/nums.c +++ b/src/stdlib/nums.c @@ -57,6 +57,10 @@ public Text_t Num$scientific(double f, Int_t precision) { return Text$format("%.*e", (int)Int64$from_int(precision, false), f); } +public Text_t Num$percent(double f, Int_t precision) { + return Text$format("%.*f%%", (int)Int64$from_int(precision, false), 100.*f); +} + public CONSTFUNC double Num$mod(double num, double modulus) { // Euclidean division, see: https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/divmodnote-letter.pdf double r = remainder(num, modulus); @@ -138,6 +142,10 @@ public Text_t Num32$scientific(float f, Int_t precision) { return Text$format("%.*e", (int)Int64$from_int(precision, false), (double)f); } +public Text_t Num32$percent(float f, Int_t precision) { + return Text$format("%.*f%%", (int)Int64$from_int(precision, false), 100.*(double)f); +} + public CONSTFUNC float Num32$mod(float num, float modulus) { // Euclidean division, see: https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/divmodnote-letter.pdf float r = remainderf(num, modulus); diff --git a/src/stdlib/nums.h b/src/stdlib/nums.h index af0e895b..be270f51 100644 --- a/src/stdlib/nums.h +++ b/src/stdlib/nums.h @@ -23,6 +23,7 @@ PUREFUNC bool Num$equal(const void *x, const void *y, const TypeInfo_t *type); CONSTFUNC bool Num$near(double a, double b, double ratio, double absolute); Text_t Num$format(double f, Int_t precision); Text_t Num$scientific(double f, Int_t precision); +Text_t Num$percent(double f, Int_t precision); double Num$mod(double num, double modulus); double Num$mod1(double num, double modulus); CONSTFUNC bool Num$isinf(double n); @@ -74,6 +75,7 @@ PUREFUNC bool Num32$equal(const void *x, const void *y, const TypeInfo_t *type); CONSTFUNC bool Num32$near(float a, float b, float ratio, float absolute); Text_t Num32$format(float f, Int_t precision); Text_t Num32$scientific(float f, Int_t precision); +Text_t Num32$percent(float f, Int_t precision); float Num32$mod(float num, float modulus); float Num32$mod1(float num, float modulus); CONSTFUNC bool Num32$isinf(float n); |
