используйте big.ParseFloat , чтобы получить big.Float
, а затем метод Int , чтобы преобразовать его в big.Int
:
flt, _, err := big.ParseFloat(input, 10, 0, big.ToNearestEven)
if err != nil {
/* handle a parsing error here */
}
var i = new(big.Int)
i, acc := flt.Int(i)
посмотрите на Go Playground .
Установив аргумент prec
на ParseFloat
, вы можете контролировать точность промежуточного числа с плавающей запятой - для вашей точности требуется не менее 72 бит Пример ввода для точного вывода (до значения, заканчивающегося десятью нулями), но значение по умолчанию, если вы передаете 0, составляет 64 бита.