number := 111555
我如何获得,例如前三位数(111)和后两位数字(55)?
答案 0 :(得分:4)
使用简单的算术:
func d(num int) (firstThree int, lastTwo int) {
firstThree = num / 1000
lastTwo = num % 100
return
}
答案 1 :(得分:4)
此功能提供特定位置的数字:
func digit(num, place int) int {
r := num % int(math.Pow(10, float64(place)))
return r / int(math.Pow(10, float64(place-1)))
}
例如digit(1234567890, 2)
代表9
而digit(1234567890, 6)
代表5
。
答案 2 :(得分:1)
答案 3 :(得分:1)
尝试this:
number := 111555
slice := strconv.Itoa(number)
fmt.Println(slice[:3]) // first 3 digits (111)
fmt.Println(slice[len(slice)-2:]) // and the last 2 digits (55)
前3位数字(111):
strconv.Itoa(number)[:3]
和最后2位数字(55):
number % 100
或:
slice := strconv.Itoa(number)
slice[len(slice)-2:]
尝试this:
package main
import (
"fmt"
"strconv"
)
func main() {
number := 111555
// and the last 2 digits (55)
l2d := number % 100
fmt.Println(l2d)
// first 3 digits (111)
f3d := strconv.Itoa(number)[:3]
// i, e := strconv.Atoi(f3d)
fmt.Println(f3d)
}
另一种方式:
两个右(最后)数字:
l2d := number % 100
第一个(左)3个数字(111):
n := numberOfDigits(number)
remainingDigits := n - 3
f3d := number / power10(remainingDigits)
尝试this:
package main
import (
"fmt"
)
func main() {
number := 111555
// and the last 2 digits (55)
l2d := number % 100
fmt.Println(l2d)
// first 3 digits (111)
n := numberOfDigits(number)
remainingDigits := n - 3
f3d := number / power10(remainingDigits)
fmt.Println(f3d)
}
func numberOfDigits(number int) int {
i := 0
for number != 0 {
i++
number /= 10
}
return i
}
func power10(n int) int {
f := 1
for ; n > 0; n-- {
f *= 10
}
return f
}
package main
import (
"fmt"
)
func main() {
number := 111555
// and the last 2 digits (55)
l2d := number % 100
fmt.Println(l2d)
// first 3 digits (111)
fmt.Println(leftDigits(number, 3))
}
func leftDigits(number, n int) int {
digits := make([]byte, 20)
i := -1
for number != 0 {
i++
digits[i] = byte(number % 10)
number /= 10
}
r := 0
for ; n != 0; n-- {
r = r * 10
r += int(digits[i])
i--
}
return r
}
输出:
55
111
答案 4 :(得分:1)
如果数字不是太大,有一种简单的方法。
{{1}}
答案 5 :(得分:1)
str := strconv.Itoa(111555)
fmt.Println(str[len(str)-2:]) //trailing 2 digits
fmt.Println(str[:3]) //first 3 digits
答案 6 :(得分:1)
例如,
package main
import (
"fmt"
"strconv"
)
func strDigits(n, digits int) (string, int) {
s := strconv.Itoa(n)
if s[0] == '-' {
s = s[1:]
}
if digits > len(s) {
digits = len(s)
}
if digits < 0 {
digits = 0
}
return s, digits
}
func firstDigits(n, digits int) string {
s, d := strDigits(n, digits)
return s[:d]
}
func lastDigits(n, digits int) string {
s, d := strDigits(n, digits)
return s[len(s)-d:]
}
func main() {
number := 111555
fmt.Println(firstDigits(number, 3))
fmt.Println(lastDigits(number, 2))
}
游乐场:https://play.golang.org/p/oYwZ5HFndt
输出:
111
55