Описание:
Есть функция, которая принимает от всех модулей значение комиссии за предоставление услуг компании.
Размер комиссии может быть от 0 до 99.99
Максимальное количество знаков после запятой: 2
В базу данных записываются только целые значения, поэтому запятую приходится сдвигать на 2 знака.
Например для комиссии размером 1.5 значение в базе данных будет соответствовать 150
Работа с функцией не должна требовать каких-либо проверок перед отправкой значения.
Результат работы функции не должен требовать перепроверки со стороны модулей, т.е. возвращаемое значение всегда считается корректным.
Разработчик реализовал функцию проверки корректности ввода и преобразования вводимого значения.
Со стороны клиентов поступают жалобы на то, что вводимая ими комиссия записывается не верно или не записывается вовсе, однако все утверждают, что заполняют корректное значение с дробной частью или без.
Задание для разработчика:
Исправьте функцию проверки вводимого значения и дальнейшего преобразования для корректной записи в базу данных итогового значения.
Под данными для записи в базу данных подразумевается результат работы функции check_commission()
Задание для тестировщика:
Проверьте корректность работы фукнции изменяя входящее значение по вашему усмотрению.
В случае выявления ошибок опишите порядок действий, которые привели к ошибке.
Задание для системного аналитика: Напишите постановку данной задачи для разработчика с максимальной детализацией.
Готовое решение нужно предоставить в виде ссылки по кнопке "Share"
package main
// Импортируем библиотеки вывода и конвертации
import (
"fmt"
"strconv"
)
// Функция проверки комиссии
func check_commission(number string) uint64 {
// Конвертируем присланное значение из строки в число с запятой во временную переменную
tempValue, err := strconv.ParseFloat(number, 64)
// Если конвертация не получилась
if err != nil {
// Скажем об этом
fmt.Println("Введено не число:", number)
// И выйдем из функции
return 0
}
// Если конвертация удалась
// Умножим значение на 100, тем самым сдвинем запятую
tempValue = tempValue * 100
// Преобразуем значение в нужный тип данных
result := uint64(tempValue)
// Возвращаем корректное значение
return result
}
// Ввиду ограничений формы входящее значение от пользователя всегда в string
// Пеменная input будет эмулировать входящее значение
func main() {
// Проверяем маленькое значение
input := "0.01"
fmt.Println("Первое значение:", input)
fmt.Println("Преобразованное значение:", check_commission(input))
// Проверяем большое значение
input = "99.99"
fmt.Println("\nВторое значение:", input)
fmt.Println("Преобразованное значение:", check_commission(input))
// Проверяем если ввели не число
input = "неЧисло"
fmt.Println("\nСтроковое значение:", input)
fmt.Println("Преобразованное значение:", check_commission(input))
}
@golang_interview