Adjust various CLI display ratios to arbitrary precision
Originally the deviations from using float64 were insignificant, but at exabyte scale they start to show up. Cleanup all displays, and clarify the expectation text, adding an extra 99.9% probability calculator to `lotus-miner info`
This commit is contained in:
+19
-7
@@ -183,18 +183,23 @@ var StateMinerInfo = &cli.Command{
|
||||
return err
|
||||
}
|
||||
|
||||
rpercI := types.BigDiv(types.BigMul(pow.MinerPower.RawBytePower, types.NewInt(1000000)), pow.TotalPower.RawBytePower)
|
||||
qpercI := types.BigDiv(types.BigMul(pow.MinerPower.QualityAdjPower, types.NewInt(1000000)), pow.TotalPower.QualityAdjPower)
|
||||
|
||||
fmt.Printf("Byte Power: %s / %s (%0.4f%%)\n",
|
||||
color.BlueString(types.SizeStr(pow.MinerPower.RawBytePower)),
|
||||
types.SizeStr(pow.TotalPower.RawBytePower),
|
||||
float64(rpercI.Int64())/10000)
|
||||
types.BigDivFloat(
|
||||
types.BigMul(pow.MinerPower.RawBytePower, big.NewInt(100)),
|
||||
pow.TotalPower.RawBytePower,
|
||||
),
|
||||
)
|
||||
|
||||
fmt.Printf("Actual Power: %s / %s (%0.4f%%)\n",
|
||||
color.GreenString(types.DeciStr(pow.MinerPower.QualityAdjPower)),
|
||||
types.DeciStr(pow.TotalPower.QualityAdjPower),
|
||||
float64(qpercI.Int64())/10000)
|
||||
types.BigDivFloat(
|
||||
types.BigMul(pow.MinerPower.QualityAdjPower, big.NewInt(100)),
|
||||
pow.TotalPower.QualityAdjPower,
|
||||
),
|
||||
)
|
||||
|
||||
fmt.Println()
|
||||
|
||||
@@ -302,8 +307,15 @@ var StatePowerCmd = &cli.Command{
|
||||
tp := power.TotalPower
|
||||
if cctx.Args().Present() {
|
||||
mp := power.MinerPower
|
||||
percI := types.BigDiv(types.BigMul(mp.QualityAdjPower, types.NewInt(1000000)), tp.QualityAdjPower)
|
||||
fmt.Printf("%s(%s) / %s(%s) ~= %0.4f%%\n", mp.QualityAdjPower.String(), types.SizeStr(mp.QualityAdjPower), tp.QualityAdjPower.String(), types.SizeStr(tp.QualityAdjPower), float64(percI.Int64())/10000)
|
||||
fmt.Printf(
|
||||
"%s(%s) / %s(%s) ~= %0.4f%%\n",
|
||||
mp.QualityAdjPower.String(), types.SizeStr(mp.QualityAdjPower),
|
||||
tp.QualityAdjPower.String(), types.SizeStr(tp.QualityAdjPower),
|
||||
types.BigDivFloat(
|
||||
types.BigMul(mp.QualityAdjPower, big.NewInt(100)),
|
||||
tp.QualityAdjPower,
|
||||
),
|
||||
)
|
||||
} else {
|
||||
fmt.Printf("%s(%s)\n", tp.QualityAdjPower.String(), types.SizeStr(tp.QualityAdjPower))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user