解题思路:
1.找到E的位置,然后记录,并且记录E后面的符号位,根据E后面的字符计算出整数
2.第一位如果是’-‘输出,如果是’+'跳过
3.输出计算出小数点的正确位置
package main
import (
"fmt"
"math"
)
func main() {
var str string
var target byte
var posE, total, sum int
pos := 2
_, _ = fmt.Scanf("%s", &str)
chars := []byte(str)
length := len(chars)
for i:=4; i<length; i++ {
if chars[i] == 'E' {
posE = i
target = chars[i+1]
total = length - (i + 1) - 1
for j:=i+2; j<length; j++ {
sum += int(float64(chars[j] - '0') * math.Pow10(total - 1))
total--
}
break
}
}
if chars[0] == '-' {
fmt.Printf("-")
}
if target == '+' {
if sum > 0 {
pos = pos + sum + 1
fmt.Printf("%c", chars[1])
for i:=3; i<posE; i++ {
if i == pos {
fmt.Printf(".")
}
fmt.Printf("%c", chars[i])
}
if sum > posE {
for i:=0; i<sum-1; i++ {
fmt.Printf("0")
}
}
} else {
fmt.Printf("%c.", chars[1])
for i:=3; i<posE; i++ {
fmt.Printf("%c", chars[i])
}
}
} else {
if sum > 0 {
fmt.Printf("0.")
for i:=1; i<sum; i++ {
fmt.Printf("0")
}
fmt.Printf("%c", chars[1])
} else {
fmt.Printf("%c.", chars[1])
}
for i:=3; i<posE; i++ {
fmt.Printf("%c", chars[i])
}
}
fmt.Println()
}