Java将带小数点的数字字符串转化为Long类型
时间: 2023-11-21 11:05:16 浏览: 222
无法直接将带小数点的数字字符串转化为Long类型,因为Long类型只能表示整数。如果需要将带小数点的数字字符串转化为整数类型,可以使用以下方法:
1.使用Double类型进行转换,然后强制转换为Long类型。
例如:
```
String str = "123.45";
double d = Double.parseDouble(str);
long l = (long) d;
```
2.先将字符串转化为BigDecimal类型,然后再将BigDecimal类型转化为Long类型。
例如:
```
String str = "123.45";
BigDecimal bd = new BigDecimal(str);
long l = bd.longValue();
```
需要注意的是,这两种方法都会丢失小数部分的数值,只保留整数部分的数值。如果需要保留小数部分的数值,可以考虑使用其他类型,如BigDecimal类型。
相关问题
java如何将数字字符串转换成数字
在Java中,将数字字符串转换成数字有多种方法,可以根据不同的情况选择合适的方式。下面介绍几种常见的转换方法:
1. 使用`Integer.parseInt()`方法:
这是最常用的方法之一,适用于转换成`int`类型的数字。如果字符串不是有效的整数格式,将会抛出`NumberFormatException`异常。
```java
String str = "123";
int number = Integer.parseInt(str);
```
2. 使用`Integer.valueOf()`方法:
这个方法和`parseInt()`类似,但返回的是`Integer`对象,而不是基本类型`int`。如果需要`int`类型,可以通过`.intValue()`方法获取。
```java
String str = "123";
Integer number = Integer.valueOf(str);
int intValue = number.intValue();
```
3. 使用`Long.parseLong()`和`Long.valueOf()`方法:
如果字符串表示的是长整型(long)数字,则可以使用这两个方法。使用方式与`Integer`的类似。
```java
String str = "1234567890123";
long number = Long.parseLong(str);
```
4. 使用`Double.parseDouble()`方法:
如果字符串包含小数点,则使用此方法将字符串转换为`double`类型的数字。
```java
String str = "123.45";
double number = Double.parseDouble(str);
```
5. 使用`BigDecimal`:
当需要精确的小数运算时,可以使用`BigDecimal`。这在金融相关的应用中非常有用。
```java
String str = "123.45";
BigDecimal number = new BigDecimal(str);
```
在使用这些方法时,需要注意字符串的内容,确保它们是有效的数字格式。如果字符串不包含数字或者格式不正确,将会抛出`NumberFormatException`异常。
long类型数字 控制小数点四舍五入 当最后一位数为5时 奇数进位偶数不进位
你可以使用Java中的BigDecimal类来实现这样的四舍五入。具体的做法是:先将long类型的数字转换为BigDecimal类型,然后调用setScale方法设置保留小数点后的位数,并使用setRoundingMode方法设置舍入模式为HALF_UP,这样就可以实现四舍五入了。
对于最后一位数为5的情况,可以使用一个判断语句来实现奇数进位偶数不进位的功能。具体的做法是:先将BigDecimal类型的数字转换为字符串类型,然后取出最后一位数,判断它是否为5,如果是,则判断它前面的数字是否为奇数,如果是,则调用add方法将其加1,否则不做处理。最后再将结果转换为long类型即可。以下是示例代码:
```java
long num = 123456789;
int scale = 2;
BigDecimal bd = new BigDecimal(num);
bd = bd.setScale(scale, RoundingMode.HALF_UP);
String str = bd.toString();
char lastChar = str.charAt(str.length() - 1);
if (lastChar == '5') {
char prevChar = str.charAt(str.length() - 2);
if ((prevChar - '0') % 2 == 1) {
bd = bd.add(BigDecimal.ONE);
}
}
long roundedNum = bd.longValue();
```
注意:以上代码仅供参考,实际使用时需要根据具体需求进行修改。
阅读全文