Java 字符串转float运算 float转字符串的方法
需求:字符串(字符串只有一位小数)转float进行运算, 将结果转成字符串(保留一位小数)
直接上代码:
float f1 = 0.1f;
String a1 ="1.5";
System.out.println(Float.parseFloat(a1)+f1);
答案:1.6
float f1 = 0.1f;
String a1 ="1.6";
System.out.println(Float.parseFloat(a1)+f1);
答案:1.7
说实话,一开始我觉得代码好像没有问题,字符串从0.1开始试了好多,结果都是对的。
然而,当a1=“1.7”的时候,问题出现了,输出结果:1.8000001
嗯?是转换方法有问题? 在网上溜达半天,都是一个套路。
这是只能考虑从保留位数、精度入手。于是发现了 DecimalFormat
0 一个数字
# 一个数字,不包括 0
. 小数的分隔符的占位符
, 分组分隔符的占位符
; 分隔格式。
- 缺省负数前缀。
% 乘以 100 和作为百分比显示
float f = 0.1f;
String max ="1.7";
DecimalFormat df = new DecimalFormat("#########.#");
String s = df.format(Float.parseFloat(max)+f);
System.out.println(s);
结果:1.8
OK,问题解决!
以上这篇Java 字符串转float运算 float转字符串的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
时间: 2018-07-13
float是单精度类型,精度是8位有效数字,取值范围是10的-38次方到10的38次方,float占用4个字节的存储空间 double是双精度类型,精度是17位有效数字,取值范围是10的-308次方到10的308次方,double占用8个字节的存储空间 当你不声明的时候,默认小数都用double来表示,所以如果要用float的话,则应该在其后加上f 例如:float a=1.3; 则会提示不能将double转化成float 这成为窄型转化 如果要用float来修饰的话,则应该使用float a
复制代码 代码如下: mport java.text.DecimalFormat; DecimalFormat df = new DecimalFormat("######0.00"); double d1 = 3.23456 double d2 = 0.0;double d3 = 2.0;df.format(d1); df.format(d2); df.format(d3); 3个结果分别为: 复制代码 代码如下: 3.230.00 2.00 java保留两位小数问题:
首先,这个NumberFormat这个类,可以格式化各种数字.你只要稍微设置一下,结果还是很理性的. 但是,他有那么一丢丢的bug,不知道你知道不? /** * 2.3F经过格式化,竟然变成2.99啦.what the fuck . * float类型的时候,值是2.3,但是一经变成Double,值就变成2.99999啦. * 这个format的参数是double类型的.所以,在传入参数的时候,就变成了对2.299999952316284进行操作.返回就过就是2.99 */ private st
float占用4个字节,和int是一样,也就是32bit. 第1个bit表示符号,0表示正数,1表示负数,这个很好理解,不用多管. 第2-9个bit表示指数,一共8为(可以表示0-255),这里的底数是2,为了同时表示正数和负数,这里要减去127的偏移量.这样的话范围就是(-127到128),另外全0和全1作为特殊处理,所以直接表示-126到127. 剩下的23位表示小数部分,这里23位表示了24位的数字,因为有一个默认的前导1(只有二进制才有这个特性).
看下面的一段代码的运行结果: public class TestDouble { public static void main(String[] args) { double d =538.8; System.out.println(d*100); } 输出结果很意外的不是 53880 而是53879.99999999999 解决方法一: 538.8*100 用*10*10 替换,才能得到我们想要的结果 538.8*10000 用 100*100替换. 解决方法二: public class
1.java中int,float,long,double取值范围 public class TestOutOfBound { public static void main(String[] args) { System.out.println(Integer.MAX_VALUE-(-Integer.MAX_VALUE)); //内存溢出 System.out.println(Integer.MAX_VALUE); //2的31次方-1,10个数位,正的20亿左右,用在钱上面不一定够 Syste
复制代码 代码如下: package airthmatic;public class demo10 { public static void main(String[] args) { double n[]={9,1.2,5,3.2,1.1}; orderNum(n); } /** * double 和 int 数字排序 * @param n */ public static void orderNum(double []n){ for(int i=0;i
Java API对Arrays类的说明是:此类包含用来操作数组(比如排序和搜索)的各种方法. 1.对基本数据类型的数组的排序 说明: (1)Arrays类中的sort()使用的是"经过调优的快速排序法"; (2)比如int[],double[],char[]等基数据类型的数组,Arrays类之只是提供了默认的升序排列,没有提供相应的降序排列方法. (3)要对基础类型的数组进行降序排序,需要将这些数组转化为对应的封装类数组,如Integer[],Double[],Character[]等
类:Nums 权限:public方法:main 权限:public参数:nums,i,j,num;参数介绍:nums,数据类型 int[] ,用来存储 int 型的一系列数组:i,数据类型 int ,作为 for 循环的循环变量,存储排序比较的轮数:j,数据类型 int ,作为 for 循环的循环变量,存储该轮排序比较的次数:num,数据类型 int ,作为两值互换的第三方变量.方法功能:定义一个 int[] 数组:设置一个循环变量 i ,记录比较轮数:设置一个循环变量 j ,记录该
用来生成简单的随机java生成随机数,大小+数字.没特符 复制代码 代码如下: package passwords;import java.util.Random;public class pwdGen { private Random rdseed=new Random(); /** *@param *length password length; *@param *letters boolean non-capital letters combination control;
首先,我们来认识几个类. Class(java.lang.Class) Class对象是一个特殊对象,每一个类都有一个Class对象,用来创建该类的"常规"对象.可以通过对象的getClass()方法获取. 比如我们运行这一行代码: 复制代码 代码如下: System.out.println("测试".getClass().toString()); 得到的结果就是: 复制代码 代码如下: class java.lang.String Field(java.lang.
MongoDB是一个文档型数据库,是NOSQL家族中最重要的成员之一,以下代码封装了MongoDB的基本操作. MongoDBConfig.java package com.posoftframework.mongodb; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Enumeration; import java.util.HashMap; i
大家可以先看一下这个静态方法public static void sort(List list, Comparator super T> c) 1.先定义一个模型: 复制代码 代码如下: package model; /** * User.java * * @author 梁WP 2014年3月3日 */public class User{ private String userName; private int userAge; pub
database.properties 复制代码 代码如下: jdbc.driver_class=oracle.jdbc.driver.OracleDriverjdbc.connection.url=jdbc:oracle:thin:@localhost:1521:orcljdbc.connection.username=scottjdbc.connection.password=tiger ConfigManager.java 复制代码 代码如下: import java.io.IOExcep
复制代码 代码如下: import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List; public class ComparatorTest implements Comparator { /** * @param args */ public static void main(String[] arg
复制代码 代码如下: package work; import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.util.regex.Matcher;import java.util.regex.Pattern; import org.apache.commons.httpclient.DefaultH