python Script file ‘C:\Users\HP\Anaconda3\Scripts\pip-script.py‘ is not present、价格一般不用double,因为可能会丢失

78 阅读2分钟
easy_install -i https://mirrors.aliyun.com/pypi/simple pip

运行结果
在这里插入图片描述

价格一般不用double,因为可能会丢失精度,一般用BigDecimal,返回String类型

测试用例

import java.math.BigDecimal;

/**
 * @author kegekeqi
 * @version 1.0
 * @date 2021-12-19 14:42
 */
public class basicReview {
	public static void main(String[] args) {
		Double f1 = 0.31;
		Double f2 = 0.1;
		System.out.println("=====没有做精度处理导致可能失去精度=======");
		System.out.println(f1 + f2);
		System.out.println(f1 * f2);
		System.out.println(f1 / f2);
		System.out.println(f1 - f2);
		System.out.println("=======处理了之后=========");
		BigDecimal b1 = new BigDecimal(String.valueOf(f1));
		BigDecimal b2 = new BigDecimal(String.valueOf(f2));
		System.out.println("b1:" + b1 + "  b2:" + b2);
		System.out.println(b1.add(b2));
		System.out.println(b1.multiply(b2));
		System.out.println(b1.divide(b2));
		System.out.println(b1.subtract(b2));

	}
}


"D:\Program Files\Java\jdk1.8.0_251\bin\java" -javaagent:D:\idea2017.2.5\ideaIU-2017.2.5.win\lib\idea_rt.jar=64564:D:\idea2017.2.5\ideaIU-2017.2.5.win\bin -Dfile.encoding=UTF-8 -classpath "D:\Program Files\Java\jdk1.8.0_251\jre\lib\charsets.jar;D:\Program Files\Java\jdk1.8.0_251\jre\lib\deploy.jar;D:\Program Files\Java\jdk1.8.0_251\jre\lib\ext\access-bridge-64.jar;D:\Program Files\Java\jdk1.8.0_251\jre\lib\ext\cldrdata.jar;D:\Program Files\Java\jdk1.8.0_251\jre\lib\ext\dnsns.jar;D:\Program Files\Java\jdk1.8.0_251\jre\lib\ext\jaccess.jar;D:\Program Files\Java\jdk1.8.0_251\jre\lib\ext\jfxrt.jar;D:\Program Files\Java\jdk1.8.0_251\jre\lib\ext\localedata.jar;D:\Program Files\Java\jdk1.8.0_251\jre\lib\ext\nashorn.jar;D:\Program Files\Java\jdk1.8.0_251\jre\lib\ext\sunec.jar;D:\Program Files\Java\jdk1.8.0_251\jre\lib\ext\sunjce_provider.jar;D:\Program Files\Java\jdk1.8.0_251\jre\lib\ext\sunmscapi.jar;D:\Program Files\Java\jdk1.8.0_251\jre\lib\ext\sunpkcs11.jar;D:\Program Files\Java\jdk1.8.0_251\jre\lib\ext\zipfs.jar;D:\Program Files\Java\jdk1.8.0_251\jre\lib\javaws.jar;D:\Program Files\Java\jdk1.8.0_251\jre\lib\jce.jar;D:\Program Files\Java\jdk1.8.0_251\jre\lib\jfr.jar;D:\Program Files\Java\jdk1.8.0_251\jre\lib\jfxswt.jar;D:\Program Files\Java\jdk1.8.0_251\jre\lib\jsse.jar;D:\Program Files\Java\jdk1.8.0_251\jre\lib\management-agent.jar;D:\Program Files\Java\jdk1.8.0_251\jre\lib\plugin.jar;D:\Program Files\Java\jdk1.8.0_251\jre\lib\resources.jar;D:\Program Files\Java\jdk1.8.0_251\jre\lib\rt.jar;D:\code\study\out\production\study" basicReview =====没有做精度处理导致可能失去精度======= 0.41000000000000003 0.031 3.0999999999999996 0.21 =======处理了之后========= b1:0.31 b2:0.1 0.41 0.031 3.1 0.21

Process finished with exit code 0


价格一般不用double,因为可能会丢失精度,一般用BigDecimal,返回String类型  
item.setPayAmount(AmountUtils.changeFen2Yuan(Long.parseLong(item.getPayAmount())));

public static String changeFen2Yuan(long price) { return BigDecimal.valueOf(price).divide(new BigDecimal(100)).toString(); }


如何用double,方便Excel求和,保留两位小数  
double d = 111231.5585;  
BigDecimal b = new BigDecimal(f);  
double df = b.setScale(2, BigDecimal.ROUND\_HALF\_UP).doubleValue();

2、构造器描述  
BigDecimal(int) 创建一个具有参数所指定整数值的对象。  
BigDecimal(double) 创建一个具有参数所指定双精度值的对象。 //不推荐使用  
BigDecimal(long) 创建一个具有参数所指定长整数值的对象。  
BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象。//推荐使用

3、方法描述  
add(BigDecimal) BigDecimal对象中的值相加,然后返回这个对象。  
subtract(BigDecimal) BigDecimal对象中的值相减,然后返回这个对象。  
multiply(BigDecimal) BigDecimal对象中的值相乘,然后返回这个对象。  
divide(BigDecimal) BigDecimal对象中的值相除,然后返回这个对象。  
toString() 将BigDecimal对象的数值转换成字符串。  
doubleValue() 将BigDecimal对象中的值以双精度数返回。  
floatValue() 将BigDecimal对象中的值以单精度数返回。  
longValue() 将BigDecimal对象中的值以长整数返回。  
intValue() 将BigDecimal对象中的值以整数返回。

> 本文使用 [文章同步助手](https://juejin.cn/post/6940875049587097631) 同步