나는 수학 연산을 베팅하고 있지만 float (자바 가상 머신의 근사값은 완벽하지 않다)에 문제가있다. 그래서,이 BigDecimal의에서이 작업을 전환하기로 결정 ...하지만 결과 몇 가지 문제 ..float에서 Java의 BigDecimal까지의 연산
이 원래 코드했습니다 : 이것은 내 convertion입니다
public float ConvertTo100(float input)
{
float output = 0.0f;
int hh;
float mm;
hh = (int)input;
mm = input - hh;
output = hh + ((input - hh)/60) * 100;
return output;
}
,하지만 작동하지 않습니다 :
public float ConvertTo100(float input)
{
BigDecimal inputBD = new BigDecimal(Float.toString(input));
String inpString = String.valueOf(input);
String[] inpsplit = inpString.split("\\.");
BigDecimal hh = new BigDecimal(Float.toString(Integer.parseInt(inpsplit[0])));
BigDecimal output = hh.add((inputBD.subtract(hh).divide(BigDecimal.valueOf(60))).multiply(BigDecimal.valueOf(1000)));
return Float.parseFloat(String.valueOf(output));
}
어디에서 문제가 있습니까 ?? 정말 고맙습니다!!! :)
'String'에 대해 무의미한 변환을하는 것처럼 보입니다. BigDecimal (double) 생성자의 사용을 피하는 유일한 이유는'double'으로 반올림하는 것을 피하기 위해서입니다. 당신은 이미'float'을 가지고 있습니다. 그리고 모든'float' 값들은 반올림없이'double'에서 정확하게 나타낼 수 있습니다. –