我正在使用math/big
。
我想知道是否有人知道将string
数字"2023930943509509"
转换为big.Rat
类型值的简短方法。
我知道.SetString()
可以用于big.Int
类型,但Rat
类型可以使用相同的内容吗?
答案 0 :(得分:2)
您不必刻意学习这些方法和功能,无论何时寻找内容,请查看包文档。有问题的文件包可以在这里找到:math/big
。
正如您在文档中看到的那样,Rat.SetString()
类型也有big.Rat
方法,您可以将其用于此目的:
func (z *Rat) SetString(s string) (*Rat, bool)
SetString将z设置为s的值并返回z和表示成功的布尔值。 s可以作为分数给出" a / b"或者作为浮点数,可选地后跟一个指数。整个字符串(不仅仅是前缀)必须对成功有效。如果操作失败,则z的值未定义,但返回的值为nil。
使用它的示例:
r := big.NewRat(1, 1)
if _, ok := r.SetString("2023930943509509"); !ok {
fmt.Println("Failed to parse the string!")
}
fmt.Println(r)
fmt.Println(r.FloatString(2))
输出(在Go Playground上尝试):
2023930943509509/1
2023930943509509.00