• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

奋斗的软件工程师

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

在 Java 中,如何保留浮点数的小数位

在Java中,保留浮点数的小数位数有多种方法:

脑海中想到最简单的 类比C语言printf


public class Demo {
    public static void main(String[] args) {
        System.out.printf("%.2f",3.1415926);
    }
}
  1. 使用DecimalFormat类:这是一个功能强大的格式化工具,可以自定义格式,如设置千分位分隔符、保留小数位数等。例如:
import java.text.DecimalFormat;

DecimalFormat df = new DecimalFormat("#.##"); // 保留两位小数
double number = 3.14159;
String formattedNumber = df.format(number);
System.out.println(formattedNumber); // 输出:3.14
  1. 使用String.format()方法:这是一种简洁的方法,可以直接在格式化字符串中指定格式。例如:
double number = 3.14159;
String formattedNumber = String.format("%.2f", number);
System.out.println(formattedNumber); // 输出:3.14
  1. 使用Math.round()方法:这种方法适用于四舍五入操作。例如:
double number = 3.14159;
double scaled = number * 100; // 乘以100将小数点向右移动两位
long rounded = Math.round(scaled);
double result = rounded / 100.0;
System.out.println(result); // 输出:3.14
  1. 使用BigDecimal类:这种类型提供了高精度计算,可以避免浮点数精度损失。例如:
import java.math.BigDecimal;

double number = 3.14159;
BigDecimal bd = new BigDecimal(number);
bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP); // 保留两位小数,四舍五入
System.out.println(bd); // 输出:3.14

选择哪种方法取决于具体需求和对精度的要求。

DecimalFormat: 功能强大,适合各种复杂的格式化需求。
String.format(): 语法简洁,适合简单的格式化。
Math.round(): 适合需要四舍五入操作的场景。
BigDecimal: 适合高精度计算和金融计算。

如果需要高精度计算,建议使用BigDecimal;
如果需要自定义格式,可以使用DecimalFormat;
如果只需要简单的格式化,String.format()已经足够了。

posted on 2024-07-19 10:59  周政然  阅读(137)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3