将数字字符串转换为数字big.Rat值的最佳方法

时间:2017-07-04 18:04:02

标签: string go type-conversion biginteger

我正在使用math/big

我想知道是否有人知道将string数字"2023930943509509"转换为big.Rat类型值的简短方法。

我知道.SetString()可以用于big.Int类型,但Rat类型可以使用相同的内容吗?

1 个答案:

答案 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