Module: Zakuro::Calculation::Lunar::ChoukeiValue

Defined in:
lib/zakuro/calculation/stella/lunar/choukei_value.rb

Overview

ChoukeiValue 再考長慶宣明暦算法

Constant Summary collapse

LOGGER =
Output::Logger.new(location: 'choukei_value')

Class Method Summary collapse

Class Method Details

.remainder_without_second(remainder:) ⇒ Integer, Float

Note:

815年で大余繰り上げあり

秒がない大余小余にする



52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/zakuro/calculation/stella/lunar/choukei_value.rb', line 52

def remainder_without_second(remainder:)
  # LOGGER.debug("minute.to_f: #{remainder.minute.to_f}")
  # LOGGER.debug("second.to_f: #{remainder.second.to_f}")
  # LOGGER.debug("base_minute: #{remainder.base_minute}")
  # LOGGER.debug(
  #   "second.to_f / base_minute: #{remainder.second.to_f / remainder.base_minute}"
  # )
  adjusted = remainder.class.new(
    day: remainder.day, minute: remainder.floor_minute, second: 0
  )
  adjusted.carry!

  [adjusted.day, adjusted.minute]
end

.rounded_day(per:, denominator:, minute:) ⇒ Integer

四捨五入した大余を返す



28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/zakuro/calculation/stella/lunar/choukei_value.rb', line 28

def rounded_day(per:, denominator:, minute:)
  # LOGGER.debug("minute: #{minute}")

  remainder_minute = Type::OldFloat.new((per * minute).to_f)

  # LOGGER.debug("remainder_minute.get: #{remainder_minute.get}")

  day = day_only(remainder_minute: remainder_minute.get, denominator: denominator)
  # 繰り上げ結果を足す
  day += carried_minute(remainder_minute: remainder_minute, denominator: denominator)

  day
end