Почему этот код всегда возвращает ноль:Float возврата в ноль golang
package main
import "fmt"
func main() {
var index_of_array int
fmt.Scan(&index_of_array)
var arr = make([]int, index_of_array)
for i := 0; i < len(arr); i++ {
fmt.Scan(&arr[i])
}
positive := 0
negative := 0
zero_ := 0
for _, arr_v := range arr {
if arr_v > 0 {
positive++
} else if arr_v < 0 {
negative++
} else if arr_v == 0 {
zero_++
}
}
fmt.Printf("%f ", float32(positive/len(arr)))
fmt.Printf("%f ", float32(negative/len(arr)))
fmt.Printf("%f ", float32(zero_/len(arr)))
}
я имею в виду для вывода
десятичного, представляющие из доли положительных чисел в массиве. Десятичный знак, представляющий долю отрицательных чисел в массиве. Десятичное представление доли нулей в массиве.
Пример ввода
-4 3 -9 0 4 1
Пример вывода
0,500000
0,333333
0,166667
, но в моем коде на выходе, как это с тем же входом
0,000000
0,000000
0,000000
Трудно ответить на это, если вы не вводите вводимые вами данные и вывод приложения –
Поскольку 'float32 (zero_/len (arr))' сначала делит int на int, который дает вам нуль и затем вы преобразуете это значение в float32 0. Это должно быть 'float32 (zero _)/float32 (len (arr))' –