61 lines
1.7 KiB
Go
61 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/fraktal/mev-beta/pkg/math"
|
|
)
|
|
|
|
func main() {
|
|
dc := math.NewDecimalConverter()
|
|
|
|
// Test case: 0.01 ETH / 1 ETH = 1%
|
|
numeratorStr := "10000000000000000" // 0.01 ETH in wei
|
|
denominatorStr := "1000000000000000000" // 1 ETH in wei
|
|
decimals := uint8(18)
|
|
|
|
fmt.Printf("=== Debugging Percentage Calculation ===\n")
|
|
fmt.Printf("Numerator string: %s\n", numeratorStr)
|
|
fmt.Printf("Denominator string: %s\n", denominatorStr)
|
|
fmt.Printf("Expected: 1%%\n\n")
|
|
|
|
// Create numerator
|
|
num, err := dc.FromString(numeratorStr, decimals, "ETH")
|
|
if err != nil {
|
|
fmt.Printf("ERROR creating numerator: %v\n", err)
|
|
return
|
|
}
|
|
|
|
// Create denominator
|
|
denom, err := dc.FromString(denominatorStr, decimals, "ETH")
|
|
if err != nil {
|
|
fmt.Printf("ERROR creating denominator: %v\n", err)
|
|
return
|
|
}
|
|
|
|
fmt.Printf("Numerator value: %s\n", num.Value.String())
|
|
fmt.Printf("Denominator value: %s\n", denom.Value.String())
|
|
|
|
// Calculate percentage
|
|
percentage, err := dc.CalculatePercentage(num, denom)
|
|
if err != nil {
|
|
fmt.Printf("ERROR calculating percentage: %v\n", err)
|
|
return
|
|
}
|
|
|
|
fmt.Printf("Percentage raw value: %s\n", percentage.Value.String())
|
|
fmt.Printf("Percentage decimals: %d\n", percentage.Decimals)
|
|
|
|
// Convert to float for display
|
|
percentageFloat, _ := percentage.Value.Float64()
|
|
// Since percentage has 4 decimal places, divide by 10000 to get actual percentage
|
|
actualPercentage := percentageFloat / 10000.0
|
|
|
|
fmt.Printf("Actual percentage: %.6f%%\n", actualPercentage)
|
|
|
|
// Manual calculation verification
|
|
fmt.Printf("\n=== Manual Verification ===\n")
|
|
fmt.Printf("10000000000000000 / 1000000000000000000 = 0.01\n")
|
|
fmt.Printf("0.01 * 100 = 1%%\n")
|
|
}
|