当前位置:   article > 正文

Golang | Leetcode Golang题解之第166题分数到小数_golang 百分数转小数

golang 百分数转小数

题目:

题解:

  1. func fractionToDecimal(numerator, denominator int) string {
  2. if numerator%denominator == 0 {
  3. return strconv.Itoa(numerator / denominator)
  4. }
  5. s := []byte{}
  6. if numerator < 0 != (denominator < 0) {
  7. s = append(s, '-')
  8. }
  9. // 整数部分
  10. numerator = abs(numerator)
  11. denominator = abs(denominator)
  12. integerPart := numerator / denominator
  13. s = append(s, strconv.Itoa(integerPart)...)
  14. s = append(s, '.')
  15. // 小数部分
  16. indexMap := map[int]int{}
  17. remainder := numerator % denominator
  18. for remainder != 0 && indexMap[remainder] == 0 {
  19. indexMap[remainder] = len(s)
  20. remainder *= 10
  21. s = append(s, '0'+byte(remainder/denominator))
  22. remainder %= denominator
  23. }
  24. if remainder > 0 { // 有循环节
  25. insertIndex := indexMap[remainder]
  26. s = append(s[:insertIndex], append([]byte{'('}, s[insertIndex:]...)...)
  27. s = append(s, ')')
  28. }
  29. return string(s)
  30. }
  31. func abs(x int) int {
  32. if x < 0 {
  33. return -x
  34. }
  35. return x
  36. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/850379
推荐阅读
相关标签
  

闽ICP备14008679号