题目
有时,我希望能够迅速将英里每加仑的里程转换为公里每升。
根据每英制加仑的英里数(输入)创建一个显示每升的公里数(输出)的应用程序。
确保将结果四舍五入为小数点后两位。如果答案以0结尾,则应该在没有0的情况下四舍五入。因此,我们应该得到5.5而不是5.50。
与此kata相关的一些有用的关联:1 加仑 = 4.54609188升,1英里= 1.609344公里。
测试用例:
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class TestConverter {
@Test
public void test1() {
assertEquals(3.54f, Converter.mpgToKPM(10), 0.001f);
}
@Test
public void test2() {
assertEquals(7.08f, Converter.mpgToKPM(20), 0.001f);
}
@Test
public void test3() {
assertEquals(10.62f, Converter.mpgToKPM(30), 0.001f);
}
}
解题
My
import java.text.DecimalFormat;
public class Converter {
public static float mpgToKPM(final float mpg) {
return Float.parseFloat(new DecimalFormat("#.00").format(1.609344f / 4.54609188f * mpg));
}
}
Other
import java.math.BigDecimal;
public class Converter {
public static float mpgToKPM(final float mpg) {
return BigDecimal.valueOf(mpg * 1.609344f / 4.54609188f).setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();
}
}
后记
我的在精度上还是会有差别,看随机的测试用例,也可以发现其用的方法。
随机测试用例
网友评论