как показать значение с плавающей запятой десятичного. десятичного во время сеанса воспроизведения delve mozilla rr (record-replay) - PullRequest
3 голосов
/ 27 марта 2020

Как мы можем легко увидеть значение с плавающей запятой десятичного числа. Десятичное значение в сеансе delve. особенно в dlv replay сессии, записанной Mozilla rr.

(dlv) args
underlyingPx = github.com/shopspring/decimal.Decimal {value: ("*math/big.Int")(0xc00101cca0), exp: 3}

(dlv) p underlyingPx
github.com/shopspring/decimal.Decimal {
    value: *math/big.Int {
        neg: false,
        abs: math/big.nat len: 1, cap: 1, [8],},
    exp: 3,}

Спасибо

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

Я разветвил инструмент delve и уточнил команду p:

https://github.com/whunmr/delve/commit/14a12a076b3626b8a36046793508785239a42f55

demo:

(dlv) p im
github.com/shopspring/decimal.Decimal {
    value: *math/big.Int {
        neg: false,
        abs: math/big.nat len: 2, cap: 7, [4670227136653295616,10618058790999],},
    exp: -33,}

value: 0.19586861307716508    <---- this is the added output 

0 голосов
/ 30 марта 2020

Согласно исходному коду десятичного числа существует метод для получения этой информации:

// Float64 returns the nearest float64 value for d and a bool indicating
// whether f represents d exactly.
// For more details, see the documentation for big.Rat.Float64
func (d Decimal) Float64() (f float64, exact bool) {
    return d.Rat().Float64()
}

В приведенном примере достаточно просто вызвать этот метод:

(dlv) p underlyingPx.Float64()
...