Java将带小数点的数字字符串转化为Long类型
时间: 2023-11-21 22:05:16 浏览: 49
无法直接将带小数点的数字字符串转化为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类型。
相关问题
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();
```
注意:以上代码仅供参考,实际使用时需要根据具体需求进行修改。
Java中,字符串转定点数
可以使用BigDecimal类来实现字符串转定点数。
首先,需要创建一个BigDecimal对象,将字符串传入构造函数中,例如:
```java
String str = "123.456";
BigDecimal bigDecimal = new BigDecimal(str);
```
然后,可以使用setScale()方法来设置小数点后的位数,例如:
```java
BigDecimal result = bigDecimal.setScale(2, RoundingMode.HALF_UP);
```
其中,第一个参数表示要保留的小数点后的位数,第二个参数表示采用的舍入模式。
最后,将BigDecimal对象转换成double类型或者long类型即可,例如:
```java
double doubleResult = result.doubleValue();
long longResult = result.longValue();
```
完整代码示例:
```java
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
String str = "123.456";
BigDecimal bigDecimal = new BigDecimal(str);
BigDecimal result = bigDecimal.setScale(2, RoundingMode.HALF_UP);
double doubleResult = result.doubleValue();
long longResult = result.longValue();
System.out.println("原始字符串:" + str);
System.out.println("转换结果:" + result);
System.out.println("转换为double类型:" + doubleResult);
System.out.println("转换为long类型:" + longResult);
}
}
```
输出结果:
```
原始字符串:123.456
转换结果:123.46
转换为double类型:123.46
转换为long类型:123
```