有一個(gè) leetcode 測(cè)試326。使用 java 的數(shù)學(xué)方法的三的冪:public class Solution { public boolean isPowerOfThree(int n) { return (Math.log(n) / Math.log(3) + epsilon) % 1 <= 2 * epsilon; }}當(dāng)我打算將此解決方案轉(zhuǎn)換為 Golang Likeimport "math"func isPowerOfThree(n int) bool { return (math.Log10(float64(n)) / math.Log10(3)) % 1 == 0.0 }然后出現(xiàn)編譯錯(cuò)誤,例如Line 4: Char 53: invalid operation: math.Log10(float64(n)) / math.Log10(3) % 1 (operator % not defined on float64) (solution.go)我檢查了數(shù)學(xué)包,但沒(méi)有像運(yùn)算符這樣受支持的函數(shù),有沒(méi)有像Golang這樣的%有效運(yùn)算符?%多謝 :)
1 回答

有只小跳蛙
TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊
TLDR: _, frac := math.Modf(f)
您可以func Mod(x, y float64) float64在math包裝中使用。
package main
import (
"math"
)
func isPowerOfThree(n int) bool {
return math.Mod((math.Log10(float64(n)) / math.Log10(3)), 1.0) == 0.0
}
你也可以使用func Modf(f float64) (int float64, frac float64).
package main
import (
"math"
)
func isPowerOfThree(n int) bool {
_, frac := math.Modf((math.Log10(float64(n)) / math.Log10(3)))
return frac == 0.0
}
- 1 回答
- 0 關(guān)注
- 333 瀏覽
添加回答
舉報(bào)
0/150
提交
取消