2 回答

TA贡献1799条经验 获得超8个赞
听起来只有字符串表示对您很重要,而 fmt 包确实为您提供了:
fmt.Printf("%1.4f", rand.Float64())
所以是的,您仍然需要包装此调用以指定小数点后的位数。
func RandomDigits(number int) string {
return fmt.Sprintf("%1." + strconv.Itoa(number) + "f", rand.Float64())
}

TA贡献1803条经验 获得超3个赞
我不知道这样的功能,但是很容易自己实现(play):
// Truncate the number x to n decimal places
//
// +- Inf -> +- Inf; NaN -> NaN
func truncate(x float64, n int) float64 {
return math.Trunc(x * math.Pow(10, float64(n))) * math.Pow(10, -float64(n))
}
将数字n小数位向左移动,截断小数位,将数字n位向右移动。
如果您想向用户展示您的号码,那么您将在某一时刻将号码转换为字符串。当您这样做时,您不应使用此方法,而应使用Tyson指出的字符串格式。例如,由于浮点数不精确,可能存在舍入错误:
truncate(0.9405090880450124,3) // 0.9400000000000001
- 2 回答
- 0 关注
- 335 浏览
添加回答
举报