Sha256: 09744ed408151e3f335f7ce0698ca1dcce6ca76eded9bac68b6fd6c761a6b83a

Contents?: true

Size: 1.4 KB

Versions: 8

Compression:

Stored size: 1.4 KB

Contents

# frozen_string_literal: true

# :nodoc:
module Zakuro
  # :nodoc:
  module Calculation
    # :nodoc:
    module Type
      #
      # OldFloat 浮動小数点数(古代)
      #
      # @note 四捨五入は常に絶対値に対して行う
      #   * value.negative? ? value.ceil : value.floor
      #   * 絶対値だけを取り出すことで、四捨五入を平易にする
      #
      class OldFloat
        # @return [Integer] 符号
        attr_reader :sign
        # @return [Float] 絶対値
        attr_reader :abs

        #
        # 初期化
        #
        # @param [Float] value 符号つき浮動小数点数
        #
        def initialize(value)
          @sign = value.negative? ? -1 : 1
          @abs = @sign * value
        end

        #
        # 四捨五入する
        #
        def floor!
          @abs = floor
        end

        #
        # 四捨五入する(非破壊的)
        #
        # @return [Float] 絶対値
        #
        def floor
          @abs.floor
        end

        #
        # 符号つき浮動小数点数を取得する
        #
        # @return [Float] 符号つき浮動小数点数
        #
        def get
          @sign * @abs
        end

        #
        # 負数かどうか
        #
        # @return [True] 負数
        # @return [False] 正数
        #
        def negative?
          @sign == -1
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
zakuro-0.7.2 lib/zakuro/calculation/type/old_float.rb
zakuro-0.7.0 lib/zakuro/calculation/type/old_float.rb
zakuro-0.6.1 lib/zakuro/calculation/type/old_float.rb
zakuro-0.6.0 lib/zakuro/calculation/type/old_float.rb
zakuro-0.5.0 lib/zakuro/calculation/type/old_float.rb
zakuro-0.4.0 lib/zakuro/calculation/type/old_float.rb
zakuro-0.3.0 lib/zakuro/calculation/type/old_float.rb
zakuro-0.2.0 lib/zakuro/calculation/type/old_float.rb