gpt4 book ai didi

java - 将 1 位小数的 double 转换为 2 位小数

转载 作者:行者123 更新时间:2023-12-01 19:45:13 24 4
gpt4 key购买 nike

我需要使用这个值来定价。所以如果用户写25,我想加载到数据库25.00,如果他写25.1,它应该是25.10。我不知道该怎么做......实际上这就是我所做的:

    EditText cost = findViewById(R.id.cost_single);

// Temp var with the value of the Edit Text
String costTemp = cost.getText().toString();


if(descriptionPayment.length() > 0 && costTemp.length() > 0) {
costPayment= Double.parseDouble(costTemp);
Map<String, Object> payment = new HashMap<>();
payment.put("cost", costPayment);
payment.put("payed by", payedByText);
db.collection("users").document(email).collection("Group").document(groupName)
.collection("Payments").document(descriptionPayment)
.set(payment)
// rest of my code

即使成本值在点后没有任何数字,我如何上传具有 2 位小数的 double 值?

最佳答案

tl;博士

new DecimalFormat( "##.00" )
.format(
new BigDecimal( "25.1" )
)

25.10

BigDecimal

如果您想要精确表示小数,请使用 BigDecimal 类。对于金钱问题,请始终使用 BigDecimal。

BigDecimal bd = new BigDecimal( "25.1" ) ;

浮点

如果您想牺牲准确性来换取更快的执行速度,请使用 float/Float(32 位)或 double/。这些使用 floating-point技术。因此,切勿将它们用于金钱或其他准确性比性能更重要的环境。

字符串

无论哪种方式,记住你的基础数学。数字 25.1 和 25.10 在逻辑上是相同的数字。

所以您真正要问的是“如何生成文本来用两位小数表示我的数字?”。

对于浮点类型,请使用 DecimalFormat类。

DecimalFormat df = new DecimalFormat( "##.00" ) ;
String output = df.format( Double.parseDouble( "25.1" ) ;

查看此代码run live at IdeOne.com .

25.10

您还可以本地化。在 some cultures例如美国,使用句号作为小数分隔符,而在 other places 中使用逗号。搜索 Stack Overflow 以获取更多信息,因为这已经被涵盖了。

生成表示 BigDecimal 值的字符串的类似方法。

BigDecimal bd = new BigDecimal( "25.1" ) ;
DecimalFormat formatterBd = new DecimalFormat( "##.00" );
String outputBd = formatterBd.format( bd ) ;

查看此代码run live at IdeOne.com .

25.10

四舍五入

如果您的数字中的小数位数多于您想要打印的数字,则另一个相关问题是四舍五入。搜索堆栈溢出,因为这个问题已经被解决了很多次。

关于 IdeOne.com

关于上面在 IdeOne.com 上运行代码的链接,该站点中的 JVM 被配置为仅使用一种区域设置,Locale.US。尝试指定其他区域设置失败。所以你不能在那里练习上面提到的本地化。

关于java - 将 1 位小数的 double 转换为 2 位小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53622876/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com