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 (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"math/big"
|
"math/big"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// a number type
|
// a number type
|
||||||
type number = *big.Rat
|
type number = *big.Rat
|
||||||
|
|
||||||
// create a number from two integers
|
|
||||||
var createNumber = big.NewRat
|
|
||||||
|
|
||||||
// create a new number type
|
// create a new number type
|
||||||
func newNumber() *big.Rat {
|
func newNumber() *big.Rat {
|
||||||
return new(big.Rat)
|
return new(big.Rat)
|
||||||
@@ -22,10 +20,55 @@ func stringToNumber(str string) (*big.Rat, bool) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// converts a number type to a string
|
// converts a number type to a string
|
||||||
func numberToString(num number, fraction bool) string {
|
func numberToString(num number, fraction int) string {
|
||||||
if fraction {
|
if fraction != 0 {
|
||||||
return num.RatString()
|
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()
|
x, _ := num.Float64()
|
||||||
return fmt.Sprint(x)
|
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) {
|
func translate(code string) {
|
||||||
a := createNumber(7, 1)
|
output, _ := newNumber().SetString("3.1415")
|
||||||
b, worked := stringToNumber("1e-1")
|
fmt.Println(numberToString(output, 0))
|
||||||
if worked {
|
|
||||||
output := newNumber().Mul(a, b)
|
|
||||||
output.Add(output, a)
|
|
||||||
output.Sub(output, a)
|
|
||||||
fmt.Println(numberToString(output, true))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user