Mercurial > mercurial > hgweb_golang.cgi
diff src/entai/entai.go @ 2:451c99c1d9de
implement intaractive mode.
author | pyon@macmini |
---|---|
date | Thu, 13 Oct 2016 06:05:06 +0900 |
parents | de451fa0c9cd |
children | ca866a38a6a0 |
line wrap: on
line diff
--- a/src/entai/entai.go Thu Oct 06 00:55:26 2016 +0900 +++ b/src/entai/entai.go Thu Oct 13 06:05:06 2016 +0900 @@ -1,6 +1,6 @@ /****************************************************************************/ -/* Entai.go ( ver 0.1 ) */ -/* Last Change: 2016-09-30 Fri 20:15:52. */ +/* Entai.go ( ver 0.2 ) */ +/* Last Change: 2016-10-07 Fri 18:32:08. */ /****************************************************************************/ package entai @@ -31,10 +31,11 @@ createRates( 4.3, 14.6, "20140101" ) // H26 createRates( 2.9, 9.2, "20150101" ) // H27 createRates( 2.8, 9.1, "20160101" ) // H28 + createRates( 2.8, 9.1, "20170101" ) // H29 ***** } -func createRates( r0, r1 float64, y string ) { - t, _ := time.Parse( "20060102", y ) +func createRates( r0, r1 float64, nyd string ) { + t, _ := time.Parse( "20060102", nyd ) rate0s = append( rate0s, r0 / 100 ) rate1s = append( rate1s, r1 / 100 ) nyds = append( nyds, t ) @@ -55,9 +56,9 @@ func ( e *Entai ) countDays() { - for range nyds { - e.yd0 = append( e.yd0, 0 ) - e.yd1 = append( e.yd1, 0 ) + for i, _ := range nyds { + e.yd0[i] = 0 + e.yd1[i] = 0 } // 1カ月後の算出 @@ -72,6 +73,11 @@ e.am = tmp break } + if tmp == e.due.AddDate( 0, 1, 0 ) { + tmp = tmp.AddDate( 0, 0, -1 ) + e.am = tmp + break + } } // 過ぎた日数の算出 @@ -93,6 +99,13 @@ } } +func ( e *Entai ) Create() { + for range nyds { + e.yd0 = append( e.yd0, 0 ) + e.yd1 = append( e.yd1, 0 ) + } +} + func ( e *Entai ) Set( d, p time.Time, g int ) { e.due, e.paid = d, p e.tax = g @@ -110,9 +123,9 @@ /* 本計算 */ var tmp float64 for i, _ := range nyds { - tmp += float64(e.yd0[i]) * rate0s[i] + float64(e.yd1[i]) * rate1s[i] + tmp += float64( e.yd0[i] ) * rate0s[i] + float64( e.yd1[i] ) * rate1s[i] } - tmp *= float64(e.tax) / 365.0 + tmp *= float64( e.tax ) / 365.0 /* 利息の後処理&端数処理 */ var intrst int @@ -123,11 +136,13 @@ } /* 追加情報 */ - info := fmt.Sprintf( "%.2f,%d =", tmp, e.ed ) + detail := fmt.Sprintf( "%d,%.0f,%d =", e.tax, tmp, e.ed ) for i, _ := range nyds { - info += fmt.Sprintf( ": %d %d ", e.yd0[i], e.yd1[i] ) + tmp1 := float64( e.yd0[i] ) * rate0s[i] * float64( e.tax ) / 365.0 + tmp2 := float64( e.yd1[i] ) * rate1s[i] * float64( e.tax ) / 365.0 + detail += fmt.Sprintf( ": %d %d (%.0f+%.0f=%.0f)", e.yd0[i], e.yd1[i], tmp1, tmp2, tmp1 + tmp2 ) } - return intrst, info + return intrst, detail }