@Test
public void testT() {
double a = 1.8;
double b = 0.1;
double c = 1.9;
Double d = 0.0;
Double e = 0.00;
System.out.println((1.7 + 0) - 1.7);
System.out.println((1.7 + 0.1) - 1.8);
System.out.println((a + b) - c);
System.out.println(NumberUtil.round((a + b) - c));
System.out.println(NumberUtil.round(a + b) - c);
System.out.println(1.9 - 1.9);
System.out.println(d.doubleValue());
System.out.println(e.doubleValue());
}
结果:
0.0
0.0
2.220446049250313E-16
0.0
0.0
0.0
0.0
0.0
两个double 值相加并不一定相等
如:
printf("%.55f", 1.9)
# 1.8999999999999999111821580299874767661094665527343750000
printf("%.55f", 1.8 + 0.1)
# 1.9000000000000001332267629550187848508358001708984375000
得: (1.8 + 0.1) - 1.9 = 2.22044604925031e-16
设计数据库时,尽量使用decimal/numeric, 而避免使用float,double 作为金额等的计算。
分享到:
相关推荐
C#winform 限制文本框输入 double类型值 原理可应用与各种语言
string转换double string转换double string转换double string转换double
注意:测试类自己编写,显示的结果内容可以自己定。 1、创建一个类,为该类定义三个构造函数,分别执行... (2)传递三个double值并求出其乘积 (3)传递两个字符串值并检查其是否相同 (4)在main方法中测试构造函数的调用
精确计算Double型数据,可用于货币计算
在判断数是否为double时,会用到小数点处理的问题,一个小数点还是多个小数点
防止Double加double后形成科学计数法问题
将cell类型的数据转换为double类型的函数
学习DELPHI的方法,以一个DOUBLE值来表示时间,这样很容易算出两者的时间差等信息。同时具有一个将时间转为字符串的函数,方便调用。 同时包含一个CHDateTime类,便于使用。 C++中的std::string功能强大,一般在可以...
Java 提供了一种使用获取double 值的精确表示的。 Java还可以使用将生成的十六进制字符串反序列化为double 值。 基本包函数as.double也可以解析Java的toHexString方法生成的十六进制字符串。 # R version 4.0.5 ...
double to string double to string
Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范围是[0.0,1.0)的左闭右开区间,返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。 for (int i = 0; i < 5; i++) { ...
特别在实际项目中,通过一个公式校验该值是否大于0,如果大于0我们会做一件事情,小于0我们又处理其他事情。 这样的情况通过double计算出来的结果去和0比较大小,尤其是有小数点的时候,经常会因为精度丢失而导致...
//将double类型转为_int64,防止精度1丢失 //将double类型转为_int64,防止精度1丢失
限制文本框只能输入double类型的代码案例!
输入一科学计数法形式字符串,如1234.5e-6 ;通过double atof()将其转换成double形的数据
本资源整理了几种c++中double与string相互转换方式,包含完整的vs2010工程。可直接使用。
double保留小数位数方法,根据传递进来的小数和要保留的位数,返回一个double值
double string 转换 /** * This class is converts a Double to a double-digit String * (and vise-versa) by BeanUtils when copying properties. * * @author <a href="mailto:matt@raibledesigns.com">Matt ...
任输入三个数,求得平均值,平均值程序(VB6.0源代码编写Function ave(ByVal a As Double, ByVal b As Double, ByVal c As Double) As Double ave = (a + b + c) / 3 End Function Private Sub Command1_Click() ...
matlab开发-struct2double。将结构转换为双格式。