DecimalFormat df =new DecimalFormat();
df.setMaximumFractionDigits(2);
df.setMinimumFractionDigits(2);
String num = df.format(a *100.00 / b) +"%";
标签归档:java
BigDecimal 加减乘除计算
BigDecimal有多种构造函数,常用的有2种。建议使用String构造方式,不建议使用double构造方式。
// 强制使用String的构造函数,double也有可能计算不太准确
// 原则是使用BigDecimal并且一定要用String来构造。
public BigDecimal(String val);
public BigDecimal(double val);
方法
add()
加法subtract()
减法multiply()
乘法divide()
除法abs()
绝对值
舍入
new BigDecimal("12.34").setScale(0, BigDecimal.ROUND_HALF_UP);
ROUND_UP
始终对非零舍弃部分前面的数字加1ROUND_DOWN
从不对舍弃部分前面的数字加1,即截短ROUND_CEILING
如果 BigDecimal 为正,则舍入行为与 ROUND_UP 相同;如果为负,则舍入行为与 ROUND_DOWN 相同ROUND_FLOOR
如果 BigDecimal 为正,则舍入行为与 ROUND_DOWN 相同;如果为负,则舍入行为与 ROUND_UP 相同ROUND_HALF_UP
四舍五入ROUND_HALF_DOWN
五舍六入ROUND_HALF_EVEN
“银行家舍入法”,主要在美国使用。四舍六入,五分两种情况。如果前一位为奇数,则入位,否则舍去
SpringBoot 取出 JSONString 形式的 requestBody
@PostMapping("/getRequestBodyJson")
public void getRequestBodyJson(HttpServletRequest request) throws IOException {
BufferedReader reader = new BufferedReader(
new InputStreamReader(request.getInputStream(), "UTF-8"));
String line;
String result = "";
while ((line = reader.readLine()) != null) {
result += line;
}
System.out.println(result);
}
注意不能使用 @RequestBody
注解,否则会空指针错误。因为 request.getInputStream()
只能被读取一次,然后就会被清空。
利用sidecar将非java服务注册进eureka
- idea 新建 Spring Boot 项目
- 编辑
pom.xml
,添加以下内容:
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-netflix-sidecar -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-netflix-sidecar</artifactId>
<version>RELEASE</version>
</dependency>
- 编辑
application.properties
文件,添加以下内容:
eureka.client.service-url.defaultZone=http://eureka-server:80/eureka
server.port=5678
spring.application.name=non-java-sidecar
sidecar.port=3000
sidecar.health-uri=http://localhost:${sidecar.port}/health.json
注意:
eureka.client.service-url.defaultZone
是 eureka 注册中心地址sidecar.health-uri
是 non-java 服务,确保能正常访问,并返回{"status":"UP"}
- 在主入口的
@SpringBootApplication
下添加@EnableSidecar
。 - 运行测试。
安装 oracle Java JDK
源安装
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
gitbash 使用 .bash_profile
示例:添加别名
cd ~
touch .bashrc
touch .bash_profile
echo 'if [ -f ~/.bashrc ]; then . ~/.bashrc; fi' > .bash_profile
echo 'alias java="java -Dfile.encoding=UTF-8"' > .bashrc # 在windows下java输出乱码的解决办法
. ~/.bashrc
java 连接 mysql 并使用 prepareStatement 查询数据库
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.sql.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
Connection conn = null;
User user = null;
Gson gson = new Gson();
try {
# JDK6 之前的版本需要加载驱动
# new com.mysql.jdbc.Driver();
# 连接数据库
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname?" +
"useSSL=false&useUnicode=true&characterEncoding=UTF8", "root", "root");
# 使用 prepareStatement 查询数据库
PreparedStatement preStatement = conn.prepareStatement("select * from tables");
ResultSet res = preStatement.executeQuery();
List<User> users = new ArrayList<User>();
while (res.next()) {
user = new User();
user.setId(Integer.parseInt(res.getString("id")));
user.setUser(res.getString("user"));
users.add(user);
}
# 导出为 json
String strJson = gson.toJson(users);
System.out.println(strJson);
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
使用 Gson 序列化 和 反序列化 json
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class Main {
public static void main(String[] args) {
User user = new User();
user.setId(1);
user.setUser("admin");
# 实例化 Gson
Gson gson = new Gson();
# 序列化 json
String jsonUser = gson.toJson(user);
System.out.println(jsonUser);
# 反序列化 json
User user1 = gson.fromJson(jsonUser, User.class);
System.out.println(user1);
System.out.println("==============================");
# 列表,使用 List
List<User> users = new ArrayList<>();
for (int i = 0; i < 2; i++) {
users.add(user);
}
String jsonUsers = gson.toJson(users);
System.out.println(jsonUsers);
List<User> users1 = gson.fromJson(jsonUsers, new TypeToken<List<User>>() {
}.getType());
for (User _user : users1) {
System.out.println(_user);
}
System.out.println("==============================");
# 多属性键值对,使用 Map
Map<String, String> ips = new HashMap<>();
for (int i = 0; i < 9; i++) {
ips.put(i + "", "192.168.1.10" + i);
}
String jsonIps = gson.toJson(ips);
System.out.println(jsonIps);
Map<String, String> ips1 = gson.fromJson(jsonIps, new TypeToken<Map<String, String>>() {
}.getType());
Set<String> set = ips1.keySet();
for (String _string : set) {
System.out.println(_string + ":" + ips1.get(_string));
}
}
}