java只取整数和小数部分,并且小数只取2位数

java怎么只取整数和小数部分,并且小数只取2位数呀?

比如:

int a = 12.2258;
// 输出结果得到 
// 整数:12
// 小数:0.22

有人可以帮忙写一下吗?
谢谢欧。

小数如果不用字符串,不一定准确,可能存在尾数,用字符串的写法

double a = 12.2258;
int b = (int) a;
String c = String.format("%.2f", a - b).substring(1);
System.out.printf("%8d%8s\n", b, c);

不用字符串,用double

double c = ((int)((a - b) * 100 + 0.5)) / 100.0;

double a;
//只取整数
b=((int)ax10)/10
//只取小数
((int)(a-b)x100)/100
别复制,我这用手机写的
乘号显示不出来,这里我用x表示代码的乘号

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/271849
  • 这篇博客你也可以参考下:Java学习笔记44:异常的嵌套和级联,异常捕获多个如何处理?
  • 除此之外, 这篇博客: Java 的 8 种基本类型中的 2 浮点类型:用于表示有小数部分的数值。在 Java 中有两种浮点类型,具体内容如下: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 类型        存储需求        取值范围

    float         4 字节           大约 ±3.402 823 47E + 38F(有效位数为 6~7 位)

    double     8 字节           大约 ±1.709 693 134 862 315 70E + 308(有效位数为 15 位)

     

    double 表示这种类型的数值精度是 float 的两倍(有人称之为双精度数值)。绝大部分应用程序都采用 double 类型。在很多情况下, float 类型的精度很难满足需求。例如,用 7 位有效数字足以精确地表示普通雇员的年薪,但表示公司总裁的年薪可能就不够用了。实际上,只有很少的情况适合使用 float 类型,例如,需要快速地处理单精度数据,或者需要存储大量数据。

    float 类型的数值有一个后缀 F(例如,3.14F)。没有后缀 F 的浮点数值(如 3.14)默认为 double 类型。当然,也可以在浮点数值后面添加后缀 D(例如,3.14D)。

    所有的浮点数值计算都遵循 IEEE 754 规范。下面是用于表示溢出和出错情况的三个特殊的浮点数值:

    • 正无穷大
    • 负无穷大
    • NaN(不是一个数字)

    例如,一个正整数除以 0 的结果为正无穷大。计算 0/0 或者负数的平方根结果为 NaN。

    常量 Double.POSITIVE_INFINITY、Double.NEGATIVE_INFINITY 和 Double.NaN(与相应的 Float 类型的常量一样)分别表示这三个特殊的值,但在实际应用中很少遇到。特别要说明的是,不能这样检测一个特定值是否等于 Double.NaN:

    if(x == Double.NaN) // is never true

    所有 "非数值" 的值都认为是不相同的。然而,可以使用 Double.isNaN 方法:

    if(Double.isNaN(x)) // check whether x is "not a number"

    警告:浮点数值不适用于禁止出现舍如误差的金融计算中。例如,命令 System.out.println( 2.0-1.1 ) 将打印出 0.8 999 999 999 999 999,而不是人们想象的 0.9 。其主要原因是浮点数值采用二进制系统表示,而在二进制系统中无法精确的表示分数 1/10。这就好像十进制无法精确地表示 1/3 一样。如果需要在数值计算中不含有任何舍如入误差,就应该使用 BigDecimal 类。