动手做实验
public class TestDouble {
public static void main(String args[]) {
System.out.println("0.05 + 0.01 = " + (0.05 + 0.01));
System.out.println("1.0 - 0.42 = " + (1.0 - 0.42));
System.out.println("4.015 * 100 = " + (4.015 * 100));
System.out.println("123.3 / 100 = " + (123.3 / 100));
}
}
经过运行发现
发现小数点后数字非常多,不是题中的两位小数。其结果不精确。
double类型的数值运算不精确的原因:
double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是2的n次方)。
简单来说就是我们给出的数值,在大多数情况下需要比64bit更多的位数才能准确表示出来(甚至是需要无穷多位),而double类型的数值只有64bit,后面舍去的位数一定会带来误差,无法得到“数学上精确”的结果。
在构建BigDecimal对象时应使用字符串而不是double数值,否则,仍有可能引发计算精度问题。(为什么会这样呢?)
Integer.parseInt方法将 String 转为数字 ( int) 类Integer 属于包 java.lang,它“封装”了一个int类型的整数,因此,它是原始数据类型int的“包装类”。
JOptionPane.showMessageDialog(
null, "The sum is " + sum, "Results", JOptionPane.PLAIN_MESSAGE );
The sum is " + sum 使用运算符 + 连接字面量“The sum is” 和计算结果 sum将String 和其它数据类型相加,结果是一个新的String
int X=100;
int Y=200;
System.out.println("X+Y="+X+Y);
System.out.println(X+Y+"=X+Y");
运行结果为X+Y=100200
300=X+Y
Java中有两种类型的变量 引用类型的变量(Reference variables)
引用一个对象 (变量本身用于存放对象在内存中的位置,以看成是一个指针),故又被称为“对象变量”);
原始数据类型的变量,变量中仅包含数据。
String firstNumber;
String secondNumber;
double number1;
double number2;
如果变量的数据类型是一个类的名字,就是引用类型的变量,它将引用一个对象。
String 是个类(注意类名首字母大写) firstNumber, secondNumber将分别引用两个字符串对象。
如果数据类型是一个原始类型(其名称由小写字母组成),这种类型的变量将直接保存一个原始数据类型的值。
double 是一个原始数据类型 number1, number2变量将保存两个双精度数.
number1 = Double.parseDouble( firstNumber );
number2 = Double.parseDouble( secondNumber );
Double.parseDouble是一个Double类所定义的静态方法
将 String 数据转为double类型的 返回 double类型的数值 记住静态方法调用语法:
类名.静态方法名( 参数 ) Double是原始数据类型double的“包装类”,属于引用类型
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南