Skip to content

Latest commit

 

History

History
55 lines (43 loc) · 1.69 KB

README.md

File metadata and controls

55 lines (43 loc) · 1.69 KB

RoundingIntegers

Build Status codecov

RoundingIntegers defines new integer types for the Julia programming language. Rounding integers act very much like regular integers, except that you can safely assign floating-point values to them. As the name suggests, such assignments cause rounding to the nearest integer.

Demonstration:

julia> using RoundingIntegers

julia> Int(7.2)     # fails with "regular" integers
ERROR: InexactError()
 in Int64(::Float64) at ./sysimg.jl:53

julia> RInt(7.2)    # but not with a rounding integer
7

julia> (map(RInt, 1.5:1:4.5)...,)  # rounds half integers to nearest even
(2, 2, 4, 4)

julia> a = Vector{RUInt8}(undef, 2)
2-element Array{RoundingIntegers.RUInt8,1}:
 0x42
 0x61

julia> a[1] = 1.7
1.7

julia> a[2] = 128.1
128.1

julia> a
2-element Array{RoundingIntegers.RUInt8,1}:
 0x02
 0x80

The following types are available:

  • RInteger (RInteger(i) converts i to the corresponding RInteger type)
  • RSigned, RUnsigned
  • RInt8, RUInt8
  • RInt16, RUInt16
  • RInt32, RUInt32
  • RInt64, RUInt64
  • RInt128, RUInt128
  • RInt, RUInt (defaults to the platform's WORD_SIZE representation)

Most operations involving rounding integers promote to regular integers. Only a small subset of operations (e.g., bit-shift operations, negation, and certain arithmetic involving numbers of all the same type) preserve the type of RIntegers.