Округление рублей до копеек

Этот коммит содержится в:
Softonik 2024-06-27 01:38:01 +03:00 коммит произвёл Nobody
родитель 14715dde21
коммит b6535b6c58
6 изменённых файлов: 28 добавлений и 14 удалений

Просмотреть файл

@ -28,7 +28,3 @@ func СекундыВМинуты(seconds int) int {
} }
return res + 1 return res + 1
} }
func ОкруглитьРубли(сумма float64) int {
return int(math.Round(сумма))
}

Просмотреть файл

@ -2,10 +2,24 @@ package delo_lib
import ( import (
"errors" "errors"
"math"
"strconv" "strconv"
"strings" "strings"
) )
const (
символовПослеЗапятойДоКопеек = 2
)
func ОкруглитьРубли(сумма float64) float64 {
return RoundFloat(сумма, символовПослеЗапятойДоКопеек)
}
func RoundFloat(number float64, roundingTempDigitsCount int) float64 {
temp := math.Pow(10, float64(roundingTempDigitsCount))
return math.Round(number*temp) / temp
}
func ДатувКвартал(in string) (int, error) { func ДатувКвартал(in string) (int, error) {
parts := strings.Split(in, ".") parts := strings.Split(in, ".")
if len(parts) < 3 { if len(parts) < 3 {

Просмотреть файл

@ -25,10 +25,10 @@
| доход | оплатить_за_квартал | оплатить_за_год | | доход | оплатить_за_квартал | оплатить_за_год |
| 0 | 0 | 0 | | 0 | 0 | 0 |
| 300000 | 0 | 0 | | 300000 | 0 | 0 |
| 300001 | 0 | 0 | | 300001 | 0.01 | 0.01 |
| 300049 | 0 | 0 | | 300049 | 0.49 | 0.49 |
| 300050 | 1 | 1 | | 300050 | 0.50 | 0.50 |
| 300051 | 1 | 1 | | 300051 | 0.51 | 0.51 |
| 300100 | 1 | 1 | | 300100 | 1 | 1 |
| 300200 | 2 | 2 | | 300200 | 2 | 2 |
| 400000 | 1000 | 1000 | | 400000 | 1000 | 1000 |

Просмотреть файл

@ -1,11 +1,9 @@
package schet package schet
import ( import "my/schet/pkg/delo_lib"
"my/schet/pkg/accuracy"
)
func процентСуммы(сумма float64) float64 { func процентСуммы(сумма float64) float64 {
часть := сумма / 100. часть := сумма / 100.
часть = float64(accuracy.ОкруглитьРубли(часть)) часть = float64(delo_lib.ОкруглитьРубли(часть))
return часть return часть
} }

Просмотреть файл

@ -30,6 +30,7 @@ func InitializeScenario(ctx *godog.ScenarioContext) {
ctx.Step(`^Должна быть ошибка$`, должнаБытьОшибка) ctx.Step(`^Должна быть ошибка$`, должнаБытьОшибка)
ctx.Step(`^Действие: "([^"]*)" за (\d+) квартал$`, действиеЗаКвартал) ctx.Step(`^Действие: "([^"]*)" за (\d+) квартал$`, действиеЗаКвартал)
ctx.Step(`^Цель "([^"]*)" за (\d+) квартал достигнута: "([^"]*)"$`, цельЗаКварталДостигнута) ctx.Step(`^Цель "([^"]*)" за (\d+) квартал достигнута: "([^"]*)"$`, цельЗаКварталДостигнута)
// ----------------------- // -----------------------
ctx.Before(func(ctx context.Context, sc *godog.Scenario) (context.Context, error) { ctx.Before(func(ctx context.Context, sc *godog.Scenario) (context.Context, error) {
beforeScenario() beforeScenario()

Просмотреть файл

@ -2,6 +2,7 @@ package schet
import ( import (
"fmt" "fmt"
"my/schet/pkg/delo_lib"
. "my/schet/pkg/testlib" . "my/schet/pkg/testlib"
. "github.com/onsi/gomega" . "github.com/onsi/gomega"
@ -77,7 +78,9 @@ func естьЦельУСНЗаЭтотКвартал(v float64) {
} }
func естьЦельСверхТрЗаКвартал(_, _, оплатить string) { func естьЦельСверхТрЗаКвартал(_, _, оплатить string) {
Ω(t.квартал.ПроцентСверх300тр()).To(Be(Atof(оплатить)), "1пр сверх 300тр за квартал") v := Atof(оплатить)
v = delo_lib.ОкруглитьРубли(v)
Ω(t.квартал.ПроцентСверх300тр()).To(Be(v), "1пр сверх 300тр за квартал")
} }
func естьЦельСверхТрЗаNКвартал(arg1, arg2, in int, оплатить string) { func естьЦельСверхТрЗаNКвартал(arg1, arg2, in int, оплатить string) {
k, err := t.цели.Квартал(in) k, err := t.цели.Квартал(in)
@ -86,7 +89,9 @@ func естьЦельСверхТрЗаNКвартал(arg1, arg2, in int, оп
Ω(k.ПроцентСверх300тр()).To(Be(Atof(оплатить)), fmt.Sprintf("1пр сверх 300тр за квартал %v", in)) Ω(k.ПроцентСверх300тр()).To(Be(Atof(оплатить)), fmt.Sprintf("1пр сверх 300тр за квартал %v", in))
} }
func естьЦельСверхТрЗаГод(_, _, оплатить string) { func естьЦельСверхТрЗаГод(_, _, оплатить string) {
Ω(t.g.ПроцентСверх300тр()).To(Be(Atof(оплатить)), "1пр сверх 300тр за год") v := Atof(оплатить)
v = delo_lib.ОкруглитьРубли(v)
Ω(t.g.ПроцентСверх300тр()).To(Be(v), "1пр сверх 300тр за год")
} }
func заданСчёт(v string) { func заданСчёт(v string) {