Fortranのnint(実数を四捨五入する関数)がどこで四捨五入してるのかなー,と思い調べました.
具体的に言うと,
1. 四捨五入する小数点以下の桁数
2. 整数部分は関係ないのかどうか?
入力
Program round implicit none integer :: i real(8),dimension(8) :: a,b a(1) = 0.33 a(2) = 0.44 a(3) = 0.49 a(4) = 0.50 a(5) = 0.51 a(6) = 0.55 a(7) = 0.60 a(8) = 0.90 write(*,'(3A10)') "i","a(i)","b(i)" do i = 1,8 b(i) = nint(a(i)) write(*,'(I10,2F10.2)') i,a(i),b(i) end do end Program round
出力
i a(i) b(i)
1 0.33 0.00
2 0.44 0.00
3 0.49 0.00
4 0.50 1.00
5 0.51 1.00
6 0.55 1.00
7 0.60 1.00
8 0.90 1.00
入力
Program round implicit none integer :: i real(8),dimension(8) :: a,b a(1) = 1.33 a(2) = 1.44 a(3) = 1.49 a(4) = 1.50 a(5) = 1.51 a(6) = 1.55 a(7) = 1.60 a(8) = 1.90 write(*,'(3A10)') "i","a(i)","b(i)" do i = 1,8 b(i) = nint(a(i)) write(*,'(I10,2F10.2)') i,a(i),b(i) end do end Program round
出力
i a(i) b(i)
1 1.33 1.00
2 1.44 1.00
3 1.49 1.00
4 1.50 2.00
5 1.51 2.00
6 1.55 2.00
7 1.60 2.00
8 1.90 2.00
というわけで,
1. 小数点以下1桁目を四捨五入している.
2. 整数部分は関係ない.
が答えですかねー.