java String->float,float->int
类型转换代码 :
|
String sourceStr = "0.0"; |
String类型 |
|
float sourceF = Float.valueOf(sourceStr); float sourceF = new Float(sourceStr); float sourceF = Float.parseFloat(sourceStr); |
String 转换为 float类型 |
|
int sourceI = (Float.valueOf(sourceStr)).intValue(); int sourceI = (int)sourceF ; |
float转换为 int类型 |
float类型数据与0比较:
if(sourceF>0.0)
result = "True";
else if(sourceF<0.0)
result = "False";
else if(sourceF==0.0)
result = "Unknown";
System.out.print(result+"\n");
当source = 0.0时,输出的确实是Unknown。说明第三个if语句为真。
=============================================================================================
浮点数与0比较
浮点数的表示是不精确的, 不能直接比较两个数是否完全相等。
一般都是在允许的某个范围 内认为像个浮点数相等,如有两个浮点数a,b,允许的误差范围为1e-6,则abs(a-b)<=1e-6, 即可认为a和b相等。
还有一种方法就是扩大再取整,比如a=5.23,b=5.23,直接比较 a==b一般为false,但是a和b都扩大一百倍,然后强制转换为int类型,再用==比较就可以了
float型变量和“零值”比较的方法:
const float EPSINON = 0.000001;
if ((x >= - EPSINON) && (x <= EPSINON))
浮点型变量并不精确, 其中EPSINON是允许的误差 (即精度) , 所以不可将float变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。
如果写成if (x == 0.0) ,则是错误的。 因为1.0在计算机中可能存为0.999999或1.00001等,很难恰好是1.0
===========================================================================================
http://cherryqq.iteye.com/blog/334855
1.Java的简单类型及其封装器类
⑴Java简单类型与封装类
我们知道,Java语言是典型的支持面向对象的程序语言,但考虑到有些基本数据类型的结构简单,占内存小且存取速度快等优点,Java依然提供了对这些非面向对象的简单数据类型的支持。当然,Java在提供大量的其它类时,也提供了与简单数据类型对应的封装类,于是,Java中就有了诸如int和Integer(float和Float、double和Double……)的不同的数据类型。
Java语言的数据类型有两大类:一类是简单类型,也称主要类型(Primitive),另一类是引用类型(Reference)。简单类型变量中存储的是具体的值,而引用类型的变量中存储的是对象的引用。
Java决定了每种简单类型的大小。这些大小并不随着机器结构的变化而变化。这种大小的不可更改正是Java程序具有很强移植能力的原因之一。
下表列出了Java中定义的简单类型、占用二进制位数及对应的封装器类。
表 Java中的简单类型
|
简单类型 |
boolean |
byte |
char |
short |
int |
Long |
Float |
Double |
void |
|
二进制位数 |
1 |
8 |
16 |
16 |
32 |
64 |
32 |
64 |
-- |
|
封装器类 |
Boolean |
Byte |
Character |
Short |
Integer |
Long |
Float |
Double |
Void |
⑵为什么使用封装类
以int和Integer为例来说,虽然从本质上它们都代表一个32位的整数,但它们却是不同的数据类型。事实上,Java中直接使用的整数都为int(就int和Integer而言),只有当数据必须作为对象的身份出现时,才必须用int对应的封装器Intege将整数值封装成对象。
例如:为给java.util包中的Vector添加一个整数,就必须如下将该整数值封装在一个Integer实例中:
Vector v=new Vector();
int k=121;
v.addElemt(new Integer(k));
另外,Integer作为int对应的封装器类,提供了许多的方法,比如:Integer的构造方法、Integer向其它各种数值类型的转换方法等等,而这些是int类型数据所没有的。
============================================
============================================
2.简单数据类型之间的转换
简单类型数据间的转换,有两种方式:自动转换和强制转换,通常发生在表达式中或方法的参数传递时。
⑴自动转换
具体地讲,当一个较“小”数据与一个较“大”的数据一起运算时,系统将自动将“小”数据转换成“大”数据,再进行运算。而在方法调用时,实际参数较“小”,而被调用的方法的形式参数数据又较“大”时(若有匹配的,当然会直接调用匹配的方法),系统也将自动将“小”数据转换成“大”数据,再进行方法的调用,自然,对于多个同名的重载方法,会转换成最“接近”的“大”数据并进行调用。
这些类型由“小”到“大”分别为 (byte,short,char)--int--long--float—double。这里我们所说的“大”与“小”,并不是指占用字节的多少,而是指表示值的范围的大小。
请看下面的示例:
①下面的语句可以在Java中直接通过:
byte b;
int i=b;
long l=b;
float f=b;
double d=b;
②如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,例如
char c='c';
int i=c;
System.out.println("output:"+i);
输出:output:99;
③对于byte,short,char三种类型而言,他们是平级的,因此不能相互自动转换,可以使用下述的强制类型转换。
short i=99 ;
char c=(char)i;
System.out.println("output:"+c);
输出:output:c;
④对象多态中若有方法:
f(byte x){……};
f(short x) {……};
f(int x) {……};
f(long x) {……};
f(float x) {……};
f(double x) {……};
又有:char y=’A’;那么,语句f(y)会调用哪一个方法呢?答案是:f(int x) {……}方法,因为它的形参比实参“大”且是最“接近”的。
而对于方法:
f(float x) {……};
f(double x) {……};
又有:long y=123L;那么,语句f(y)调用的方法则是f(float x) {……}。
⑵强制转换
将“大”数据转换为“小”数据时,你可以使用强制类型转换。即你必须采用下面这种语句格式:
int n=(int)3.14159/2;
可以想象,这种转换肯定可能会导致溢出或精度的下降。
注:
①当字节类型变量参与运算,java作自动数据运算类型的提升,将其转换为int类型。
byte b;
b=3;
b=(byte)(b*3);//必须声明byte。
②带小数的变量默认为double类型。
float f;
f=1.3f;//必须声明f。
⑶包装类过渡类型转换
一般情况下,我们首先声明一个变量,然后生成一个对应的包装类,就可以利用包装类的各种方法进行类型转换了。例如:
①当希望把float型转换为double型时:
float f1=100.00f;
Float F1=new Float(f1);
double d1=F1.doubleValue();//F1.doubleValue()为Float类的返回double值型的方法
②当希望把double型转换为int型时:
double d1=100.00;
Double D1=new Double(d1);
int i1=D1.intValue();
简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。即:Boolean(boolean value)、Character(char value)、Integer(int value)、Long(long value)、Float(float value)、Double(double value)
而在各个包装类中,总有形为××Value()的方法,来得到其对应的简单类型数据。利用这种方法,也可以实现不同数值型变量间的转换,例如,对于一个双精度实型类,intValue()可以得到其对应的整型变量,而doubleValue()可以得到其对应的双精度实型变量。
============================================
============================================
3.字符串与其它类型间的转换
⑴其它类型向字符串的转换
①调用类的串转换方法:X.toString();
②自动转换:X+“”;
③使用String的方法:String.volueOf(X);
============================================
⑵字符串作为值,向其它类型的转换
①先转换成相应的封装器实例,再调用对应的方法转换成其它类型
例如,字符中“32.1”转换double型的值的格式为:new Float(“32.1”).doubleValue()。也可以用:Double.valueOf(“32.1”).doubleValue()
②静态parseXXX方法
String s = "1";
byte b = Byte.parseByte( s );
short t = Short.parseShort( s );
int i = Integer.parseInt( s );
long l = Long.parseLong( s );
Float f = Float.parseFloat( s );
Double d = Double.parseDouble( s );
③Character的getNumericValue(char ch)方法
具体可查阅api。
再分享 java.lang.math 中的几个函数:
========================================================================================
四舍五入:
static long round(double a)
Returns the closest long to the argument.
static int round(float a)
Returns the closest int to the argument.
下取整:
static double ceil(double a)
Returns the smallest (closest to negative infinity) double value that is not less than the argument and is equal to a mathematical integer.
上取整:
static double floor(double a)
Returns the largest (closest to positive infinity) double value that is not greater than the argument and is equal to a mathematical integer.
例如:
import java.lang.*;
public class quzheng{
public static void main(String args[]){
//四舍五入 //结果为:
System.out.println(Math.round(3.40d)); //3
System.out.println(Math.round(3.60d)); //4
System.out.println(Math.round(3.40f)); //3
System.out.println(Math.round(3.60f)); //4
//上取整
System.out.println(Math.ceil(3.4)); //4.0
System.out.println(Math.ceil(3.6)); //4.0
//下取整
System.out.println(Math.floor(3.40)); //3.0
System.out.println(Math.floor(3.60)); //3.0
}
}
转自:http://blog.sina.com.cn/s/blog_8af106960101a22t.html
java String->float,float->int的更多相关文章
- Java String 对象,你真的了解了吗?
String 对象的实现 String对象是 Java 中使用最频繁的对象之一,所以 Java 公司也在不断的对String对象的实现进行优化,以便提升String对象的性能,看下面这张图,一起了解一 ...
- [Java] String类, StringBuffer类
1. String 类 1. 创建: String s1 = new String; s1 = "abc"; String s2 = new String("abc&qu ...
- 在一个java类里,private int a; 什么时候要使用integer
private Integer index; if(index == null) index = 0; else this.index = index; Integer有一个明显的好处,就是它能比in ...
- java String比较,“==”和“equal”区别
public static void main(String[] args){ String str1 = new String("str"); String str2 = new ...
- java——String类,时间类,格式化
日期类 格式化
- java.sql.Types,数据库字段类型,java数据类型的对应关系
以下转自:http://kummy.itpub.net/post/17165/172850 本文在原文基础上有增减. 本概述是从<JDBCTM Database Access from Java ...
- 写给小白看的入门级 Java 基本语法,强烈推荐
之前写的一篇我去阅读量非常不错,但有一句留言深深地刺痛了我: 培训班学习半年,工作半年,我现在都看不懂你这篇文章,甚至看不下去,对于我来说有点深. 从表面上看,这句话有点讽刺我的文章写得不够通俗易懂的 ...
- 怒肝俩月,新鲜出炉史上最有趣的Java小白手册,第一版,每个 Java 初学者都应该收藏
这么说吧,在我眼里,Java 就是最流行的编程语言,没有之一(PHP 往一边站).不仅岗位多,容易找到工作,关键是薪资水平也到位,不学 Java 亏得慌,对吧? 那可能零基础学编程的小伙伴就会头疼了, ...
- Java基础-数据类型int,short,char,long,float,double,boolean,byte
Java语言是静态类型的(statical typed),也就是说所有变量和表达式的类型再编译时就已经完全确定.由于是statical typed,导致Java语言也是强类型(Strong typed ...
- c++中几种常见的类型转换。int与string的转换,float与string的转换以及string和long类型之间的相互转换。to_string函数的实现和应用。
1.string转换为int a.采用标准库中atoi函数,对于float和龙类型也都有相应的标准库函数,比如浮点型atof(),long型atol(). 他的主要功能是将一个字符串转化为一个数字,在 ...
随机推荐
- Did Pong Lie? (差分系统 判负环)
Did Pong Lie? 时间限制: 5 Sec 内存限制: 128 MB提交: 68 解决: 15[提交][状态][讨论版] 题目描述 Doctor Pong has two arrays o ...
- python3实践-从网站获取数据(Carbon Market Data-GD) (bs4/Beautifulsoup)
结合个人需求,从某个网站获取一些数据,发现网页链接是隐藏的,需要通过浏览器看后面的代码来获取真实的链接. 下面这个案例,直接是从真实的链接中爬去数据. 此外,发现用pandas的read_html不能 ...
- [CODECHEF]TREECNT2
题意:一棵带边权的树,边权可单边修改,问初始时和每次修改后有多少条路径$\gcd=1$ 首先考虑用反演求答案,设$f(n)$为路径$\gcd=n$的路径条数,$g(n)$为路径$\gcd$是$n$倍数 ...
- 【Tarjan】【LCA】【动态规划】【推导】hdu6065 RXD, tree and sequence
划分出来的每个区间的答案,其实就是连续两个的lca的最小值. 即5 2 3 4 这个区间的答案是min(dep(lca(5,2)),dep(lca(2,3),dep(lca(3,4)))). 于是dp ...
- 【思路】Gym - 101173F - Free Figurines
套娃形成一些链形结构,给你套娃的初始状态和目标状态,问你需要几步(将最外层套娃打开,以及将一整套套娃塞进一个空套娃都算一步)才能达到. 容易发现,只有每条链链尾的匹配段可以不拆,其他的都得拆开. #i ...
- 【数论】【Polya定理】poj1286 Necklace of Beads
Polya定理:设G={π1,π2,π3........πn}是X={a1,a2,a3.......an}上一个置换群,用m中颜色对X中的元素进行涂色,那么不同的涂色方案数为:1/|G|*(mC(π1 ...
- python基础之文件操作,函数
文件操作 +模式: r+t w+t a+t r+b w+b a+b 可读可写,其他功能与人,r,w,a相同 f.seek(offset,whence) 文件指针移动 offest的单 ...
- hdu 4071& poj 3873 & zoj 3386 & uva 12197 Trick or Treat 三分法
思路: 看到这个题目就发现所需最短时间也就是房子和相遇点的最远距离具有凹凸性,很容易就想到了三分法枚举. 找出所有房子的X坐标的最小最大值作为上下界. 代码如下: #include<stdio. ...
- 8VC Venture Cup 2016 - Elimination Round D. Jerry's Protest 暴力
D. Jerry's Protest 题目连接: http://www.codeforces.com/contest/626/problem/D Description Andrew and Jerr ...
- 新浪微博宋琦:PHP在微博优化中的“大显身手”
摘要:2013中国软件开发者大会编程语言与工具专题论坛中,新浪微博架构师宋琦介绍了PHP在新浪微博中的应用,并且分享了很多微博主站所做的性能优化的工作. [CSDN报道] 2013中国软件开发者大会( ...