JRuby에서 플로트를 소수점 두 자리로 반올림하려면 어떻게 해야 합니까?
JRuby(1.6.x)에서 플로트를 소수점 두 자리로 반올림하려면 어떻게 해야 합니까?
number = 1.1164
number.round(2)
# The above shows the following error
# wrong number of arguments (1 for 0)
(5.65235534).round(2)
#=> 5.65
sprintf('%.2f', number)
숫자를 매우 강력하게 포맷하는 암호화된 방법입니다.결과는 항상 문자열이지만, 라운드를 하고 계시기 때문에 어쨌든 프레젠테이션 목적으로 하고 계신 것 같습니다. sprintf
원하는 대로 숫자 형식을 지정할 수 있으며 그 이상의 형식을 지정할 수 있습니다.
전체 sprintf 설명서: http://www.ruby-doc.org/core-2.0.0/Kernel.html#method-i-sprintf
Float#round는 Ruby 1.8이 아닌 Ruby 1.9에서 매개 변수를 사용할 수 있습니다. JRuby는 기본적으로 1.8이지만 1.9 모드에서 실행할 수 있습니다.
편집
피드백을 받은 결과, 원래 해결책이 작동하지 않은 것 같습니다.그래서 제안 중 하나로 답변을 업데이트한 것입니다.
def float_of_2_decimal(float_n)
float_n.to_d.round(2, :truncate).to_f
end
소수점 이하 두 자리의 반올림 숫자를 사용하려는 경우 다른 답변도 사용할 수 있습니다.하지만 반올림하지 않고 소수점이 처음 두 자리인 부동소수점 숫자를 사용하려면 해당 답변이 도움이 되지 않습니다.
소수점 이하 두 자리의 부동소수점 숫자를 얻기 위해 이 기법을 사용했습니다.경우에 따라 작동하지 않음
def float_of_2_decimal(float_n)
float_n.round(3).to_s[0..3].to_f
end
와 함께5.666666666666666666666666
돌아올 것입니다.5.66
둥근 대신에5.67
누군가에게 도움이 되길 바랍니다.
사용해 보십시오.
module Util
module MyUtil
def self.redondear_up(suma,cantidad, decimales=0)
unless suma.present?
return nil
end
if suma>0
resultado= (suma.to_f/cantidad)
return resultado.round(decimales)
end
return nil
end
end
end
다음 코드를 사용했습니다.
<th><%#= sprintf("%0.01f",prom/total) %><!--1dec,aprox-->
<% if prom == 0 or total == 0 %>
N.E.
<% else %>
<%= Integer((prom/total).to_d*10)*0.1 %><!--1decimal,truncado-->
<% end %>
<%#= prom/total %>
</th>
소수점 이하 2자리로 자르려면 다음을 사용해야 합니다.Integr(a*100)*0.01
언급URL : https://stackoverflow.com/questions/10459901/how-do-you-round-a-float-to-2-decimal-places-in-jruby
'source' 카테고리의 다른 글
상수 배열 선언 (0) | 2023.06.03 |
---|---|
어셈블리 파일 버전을 가져오는 방법 (0) | 2023.06.03 |
ASP.NET 웹 사이트 또는 ASP.NET 웹 응용 프로그램? (0) | 2023.06.03 |
git pull 오류: 오류: 원격 참조가 있지만 예상됨 (0) | 2023.05.29 |
pgsql 포트 변경 (0) | 2023.05.29 |