每日一练96——Java英里每加仑到公里每升(8kyu)

题目

有时,我希望能够迅速将英里每加仑的里程转换为公里每升。

根据每英制加仑的英里数(输入)创建一个显示每升的公里数(输出)的应用程序。

确保将结果四舍五入为小数点后两位。如果答案以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();
    }
}

后记

我的在精度上还是会有差别,看随机的测试用例,也可以发现其用的方法。

随机测试用例
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 十月底,007战友杨琪在群里发起了21天暴力行动的活动,参加活动的人可以选择阅读、写作等项目。由于我之前看到简书上...
    成长的美好时光阅读 341评论 0 0
  • 晚间九点四十左右,格格微信我,有没有现代诗推荐。我想到的,不是客观的,从文学性的角度,而是我喜欢的。我好像...
    佛兰德斯的小土狗阅读 192评论 0 0
  • (阿飞篇) 你那不经意的温柔 便成为我一生唯一的牵挂 你眼底眉梢的笑意 是我生命中的阳光 我可以 让你离开我的世界...
    喜乐平安_e591阅读 319评论 0 0
  • 文/萌肉酱 前一段时间王宝强的新闻简直爆炸,随手搜一哈几个门户网站的娱乐版,半壁江山都是wuli宝宝的: 其实我对...
    吹呀吹泡泡阅读 1,786评论 0 51
  • 一、小确幸: 1、比特币等相关虚拟币出现大跌及A股也有小幅度的跌幅,貌似我已经能比较淡定的看待这个事项了;结果基金...
    清风_bd61阅读 80评论 0 0