- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我试图从 edittext 中获取值并存储为字符串。然后它转换为双倍。虽然最多可以转换 7 个字符,但如果我尝试添加超过 7 个字符,结果是 1.23456789E8。这是我的代码
String value = txtData.txtSearch.getText().toString();
// value = "987654321.45"
double amount1 = Double.parseDouble(value);
// amount1 = 9.8765432145E8
double amount2 = 0.05;
double result = (amount1 * amount2) / 100;
// result = 4.3827160725E14
经过计算我得到 4.3827160725E14 这是不正确的正确答案是 493827.16
如何在不损失精度的情况下获得正确的值?
最佳答案
我解决了。我现在使用 BigDecimal 而不是 double 我的代码是
String value = txtData.txtSearch.getText().toString();
// value = "987654321.45"
BigDecimal amount1 = new BigDecimal(value);
// amount1 = "987654321.45"
BigDecimal amount2 = new BigDecimal(0.05);
BigDecimal result = (amount1.multiply(amount2)).divide(new BigDecimal(100));
result = result.setScale(2, RoundingMode.FLOOR);
// result = 493827.16
关于Android - 避免字符串中的指数转换为双倍转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19970422/
我有三个 double 组列表。我想将数组1复制到数组2并将其放入第三个数组中。 // ArrayList 1 [0.0, 1.0, 0.0, 1.0] // ArrayList 2 // Rando
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在编写一个带有变量 long balance 的银行程序将美分存入账户。当用户输入金额时,我有一种方法可以将美元转换为美分: public static long convertFromUsd (
如何 DRY(不要重复自己)RSpec 中的 double?例如: let(:s1) {instance_double(Class1, :att
我是 Java 新手,我想知道为什么当你有双 10/4 时却得到 2? double 是否总是必须有小数才能得到正确的答案?谢谢。 public class Super { public st
我正在用 Python 为 Fortran 库编写前端。 Python 模块应该可以在 32 位和 64 位机器上运行;适用于 Windows、Linux 和 Mac。 我想了解一些数据类型的字节宽度
我有两个ajax json。一个用于聊天用户列表列,另一个用于每个用户的消息历史记录。当单击 $('.member_list ul li') 元素时...第二个 ajax 将 li 的值作为 json
从 GHCi 中的 .hs 文件加载 a = 2+2.0 并执行 :t a 显示 a::Double。 另一方面,在 GHCi 中执行 let b = 2+2.0 和 :t b 会显示 b::Frac
我是一名优秀的程序员,十分优秀!