当前位置: 首页 > 面试题库 >

如何在不损失Java精度的情况下将String转换为Double?

华福
2023-03-14
问题内容

尝试如下

String d=new String("12.00");
Double dble =new Double(d.valueOf(d));
System.out.println(dble);

输出:12.0

但我想获得12.00的精度

请让我知道正确的方法,而不在字符串类中使用format()方法


问题答案:

使用BigDecimal而不是双重:

String d = "12.00"; // No need for `new String("12.00")` here
BigDecimal decimal = new BigDecimal(d);

之所以有效,是因为BigDecimal保持了“精度”,BigDecimal(String)构造函数将其设置为从右边的数字开始.,并在中使用它toString。因此,如果仅将其丢弃System.out.println(decimal);,它就会打印出来12.00



 类似资料:
  • 我的意思是,例如,我用IEEE-754单精度编码了以下数字: 上面的二进制数存储在文本字符串中。 问题是,如何在不丢失精度的情况下将这个字符串转换为IEEE-754双精度表示(有点像下面的,但值不同)? 这是用IEEE-754双精度编码的< del >相同的数。 我已经尝试使用下面的算法将第一个字符串先转换回十进制数,但它失去了精度。 我在Windows平台上使用Qt C框架。 编辑:我必须道歉,

  • 问题内容: 我需要一个解决方案将String转换为字节数组,而无需像这样更改: 输入: 输出: 当我使用 那么回复是 但我希望回复是 问题答案: 您应始终确保序列化和反序列化使用相同的字符集,这会将字符映射到字节序列,反之亦然。默认情况下,String.getBytes()和新的String(bytes)使用默认字符集,该字符集可能是特定于语言环境的。 使用getBytes(Charset)重载

  • 问题内容: 我有个问题。我正在尝试将一些字符串转换为日期,但我不知道日期到达的格式。 这或许让他们或等。 如何将这些字符串转换为Date?我尝试了这个: 但是,当我打印出someDate时,它的打印方式是这样的:2019-08-05 12:42:48.638 CEST这意味着,但是当我运行以上代码时,日期对象现在变成了,至少可以这样说。 有什么想法可以正确格式化日期格式吗? 问题答案: 你不能!

  • 问题内容: 我有一个原始浮点数,需要作为原始双数。简单地将浮标转换为两倍会给我带来额外的精度。例如: 但是,如果我不是强制类型转换,而是将浮点数输出为字符串,然后将字符串解析为双精度,那么我将得到所需的内容: 有没有比String返回更好的方法了? 问题答案: 这并不是说你实际上获得了更高的精度-而是浮标没有准确地代表你最初瞄准的数字。双被精确地表示原始浮子; 显示的是已经存在的“额外”数据。 例

  • 我有下面的抓耳挠腮,演示在和这里 两个版本中的简单编译类中都会发生相同的情况 尽管17警告不再需要 JLS在第5.1节中说明了这一点。2. 14年,在项目清单之后,它包含以下内容 根据我的阅读,这是实现中的错误?我发现执行此转换的唯一可靠方法是。

  • 问题陈述: 编写一个方法whatTime,它采用int,seconds,表示从某一天午夜开始的秒数,并返回一个格式为“:”的字符串。此处,表示自午夜以来的完整小时数,表示自上一完整小时结束以来的完整分钟数,以及自上一完整分钟结束以来的秒数。和中的每一个都应该是整数,没有额外的前导0。因此,如果秒为0,则应返回“0:0:0”,而如果秒为3661,则应返回“1:1:1” 我的算法: 以下是我的算法对输