ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【Java Cookbook 1】数值的处理

2021-06-07 21:02:53  阅读:231  来源: 互联网

标签:Java 带符号 double float 数据类型 数值 Trick 3.0 Cookbook


目录

I. Introduction

II. Content

Trick 1. 检查字符串是否可以有效地转化为数字

Trick 2. 将一个较大的数据类型存储在较小的类型中


I. Introduction

对任何程序来说,数据都是最基础的东西。无论你是想做销售系统,或者财务系统,乃至于学校成天要你做的图书管理系统(比如武汉理工),没有数据的支持,都是镜花水月。

Java拥有几种常见的数据类型用来表示整数,浮点数,布尔值以及字符等。注意,Java为了跨平台兼容已经对数据类型的大小做出详细的规定,而不是像C语言那样任由编译器来决定。

更正:boolean官方文档没有明确定义,依赖于JVM具体实现。逻辑上理解是占用 1 位,但是实际中会考虑计算机高效存储因素。

[来源: JavaGuide/Java基础知识.md at master · Snailclimb/JavaGuide (github.com)]

常见数据类型
类型包装器位数内容默认值
byteByte8带符号整数0
intInteger32带符号整数0
shortShort16带符号整数0
longLong64带符号整数0L
floatFloat32IEEE-754 浮点数0f
doubleDouble64IEEE-754 浮点数0d
charChar16无符号整数'u0000'
booleanBoolean1布尔值false

II. Content

Trick 1. 检查字符串是否可以有效地转化为数字

你需要确定字符串 s 是否可以转化为数字 x,如果可以,进行转化。

解决方法

用上正确的包装类以及异常处理机制。

代码

public static void main(String[] argv) {
    String aNumber = argv[0]; // not argv[1]
    double result;
    try {
        result = Double.parseDouble(aNumber);
        System.out.println("Number is " + result);
    } catch (NumberFormatException exc) {
        System.out.println("Invalid number " + aNumber);
        return;
    }
}

补充:

如果你的数字类型比较特殊,可以用正则表达式解决。

 

Trick 2. 将一个较大的数据类型存储在较小的类型中

你希望将一个 long 的数据存储在 short 或者 int 。

解决方法:

强制类型转化。

代码:

long old_one = 150;
short new_one = (short) old_one;

补充:

// 错误写法
float f = 3.0;

// 等价于
double tmp = 3.0;
float f = tmp;

// 正确写法
float f = 3.0f; // or just 3f
double f = 3.0;
float f = (float)3.0;
float f = 3;

// int 转化为short, char, byte也会有这种错误。

 

Trick 3. 确保浮点数运算的准确性

浮动数的运算其实是有一定误差的,这里有一个很经典的例子

double x1=1.0-0.9;
double x2=0.9-0.8;

System.out.println(x1==x2); // false

 

标签:Java,带符号,double,float,数据类型,数值,Trick,3.0,Cookbook
来源: https://blog.csdn.net/qq_43272626/article/details/117638200

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有