mirror of
https://github.com/Open-Argon/argon-v3.git
synced 2025-12-06 08:56:07 +00:00
add sub and super stript to number to string
This commit is contained in:
@@ -3,14 +3,12 @@ package main
|
||||
import (
|
||||
"fmt"
|
||||
"math/big"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// a number type
|
||||
type number = *big.Rat
|
||||
|
||||
// create a number from two integers
|
||||
var createNumber = big.NewRat
|
||||
|
||||
// create a new number type
|
||||
func newNumber() *big.Rat {
|
||||
return new(big.Rat)
|
||||
@@ -22,10 +20,55 @@ func stringToNumber(str string) (*big.Rat, bool) {
|
||||
}
|
||||
|
||||
// converts a number type to a string
|
||||
func numberToString(num number, fraction bool) string {
|
||||
if fraction {
|
||||
return num.RatString()
|
||||
func numberToString(num number, fraction int) string {
|
||||
if fraction != 0 {
|
||||
str := num.RatString()
|
||||
if fraction == 1 {
|
||||
return str
|
||||
}
|
||||
split := strings.SplitN(str, "/", 2)
|
||||
if len(str) == 1 {
|
||||
return split[0]
|
||||
}
|
||||
numerator := split[0]
|
||||
denominator := split[1]
|
||||
|
||||
super := []string{}
|
||||
for i := 0; i < len(numerator); i++ {
|
||||
super = append(super, superscript[numerator[i]])
|
||||
}
|
||||
sub := []string{}
|
||||
for i := 0; i < len(denominator); i++ {
|
||||
sub = append(sub, subscript[denominator[i]])
|
||||
}
|
||||
return strings.Join(super, "") + "/" + strings.Join(sub, "")
|
||||
}
|
||||
x, _ := num.Float64()
|
||||
return fmt.Sprint(x)
|
||||
}
|
||||
|
||||
var superscript = map[byte]string{
|
||||
'0': "⁰",
|
||||
'1': "¹",
|
||||
'2': "²",
|
||||
'3': "³",
|
||||
'4': "⁴",
|
||||
'5': "⁵",
|
||||
'6': "⁶",
|
||||
'7': "⁷",
|
||||
'8': "⁸",
|
||||
'9': "⁹",
|
||||
}
|
||||
|
||||
var subscript = map[byte]string{
|
||||
'0': "₀",
|
||||
'1': "₁",
|
||||
'2': "₂",
|
||||
'3': "₃",
|
||||
'4': "₄",
|
||||
'5': "₅",
|
||||
'6': "₆",
|
||||
'7': "₇",
|
||||
'8': "₈",
|
||||
'9': "₉",
|
||||
}
|
||||
|
||||
@@ -5,12 +5,6 @@ import (
|
||||
)
|
||||
|
||||
func translate(code string) {
|
||||
a := createNumber(7, 1)
|
||||
b, worked := stringToNumber("1e-1")
|
||||
if worked {
|
||||
output := newNumber().Mul(a, b)
|
||||
output.Add(output, a)
|
||||
output.Sub(output, a)
|
||||
fmt.Println(numberToString(output, true))
|
||||
}
|
||||
output, _ := newNumber().SetString("3.1415")
|
||||
fmt.Println(numberToString(output, 0))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user