jjzjj

decimalformat

全部标签

java - 使用 DecimalFormat 的科学记数法中的有效位数

我试图完全理解DecimalFormat的确切行为。我目前正在使用此类的科学记数法功能进行一些测试。而且我在调整科学记数法中有效数字的确切数量方面遇到了问题。根据Java7的Javadoc:Thenumberofsignificantdigitsinthemantissaisthesumoftheminimumintegerandmaximumfractiondigits,andisunaffectedbythemaximumintegerdigits.Forexample,12345formattedwith"##0.##E0"is"12.3E3".Toshowalldigits,s

Java:使用 DecimalFormat 格式化 double 和整数,但保留没有小数点分隔符的整数

我正在尝试在Java程序中格式化一些数字。这些数字将是double和整数。在处理double时,我只想保留两位小数,但在处理整数时,我希望程序不影响它们。换句话说:double-输入14.0184849945double-输出14.01整数-输入13整数-输出13(not13.00)有没有办法在相同DecimalFormat实例中实现它?到目前为止,我的代码如下:DecimalFormatdf=newDecimalFormat("#,###,##0.00");DecimalFormatSymbolsotherSymbols=newDecimalFormatSymbols(Locale.

java - DecimalFormat 四舍五入

下面是一些小代码来说明我所看到的floatfloater=59.999f;DecimalFormatdf=newDecimalFormat("00.0");System.out.println(df.format(floater));这打印:60.0我想打印59.9我需要做什么? 最佳答案 在使用DecimalFormat之前添加这一行:df.setRoundingMode(RoundingMode.DOWN);看看其他舍入模式,看看哪种最适合您。注意:此方法只适用于JDK1.6及以上版本

java - 更改 DecimalFormat 语言环境

我在Edittext的addTextChangedListener方法中有自定义DecimalFormat,一切正常,但是当我更改语言(区域设置)时,我的addTextChangedListener不起作用。doubleanswer=inputDouble*counterToDouble;DecimalFormatdf=newDecimalFormat("##.########");//df=(DecimalFormat)numberFormat;df.setRoundingMode(RoundingMode.DOWN);answer=Double.parseDouble(df.for

java - 不同线程中的 DecimalFormat.format(double)

我必须在许多线程中并行打印许多格式化的十进制值。要格式化十进制值,我使用java.text.DecimalFormat由模式配置。我知道来自DecimalFormat的java文档的警告。:Decimalformatsaregenerallynotsynchronized.Itisrecommendedtocreateseparateformatinstancesforeachthread.Ifmultiplethreadsaccessaformatconcurrently,itmustbesynchronizedexternally.但我不知道这个警告是否适用于我的场景:我配置jav

Java DecimalFormat 返回 "?"

我的DecimalFormat有时会返回“?”尝试format()时。是否有可以创建此场景的输入?例如:DecimalFormatdf=newDecimalFormat("#.####");df.format(X);//output:'?'X可能是什么? 最佳答案 不是问号,是U+FFFDREPLACEMENTCHARACTER,显示为?因为它不能映射到输出编码:NaNisformattedasastring,whichtypicallyhasasinglecharacter\uFFFD.Thisstringisdetermined

java - 如何使用 Java 的 DecimalFormat 进行 "smart"货币格式?

我想使用Java的DecimalFormat来像这样格式化double:#1-100->$100#2-100.5->$100.50#3-100.41->$100.41到目前为止,我能想到的最好的是:newDecimalFormat("'$'0.##");但这不适用于案例#2,而是输出“$100.5”编辑:很多这些答案只考虑案例#2和#3,并没有意识到他们的解决方案会导致#1将100格式化为“$100.00”,而不仅仅是“$100”。 最佳答案 一定要使用DecimalFormat吗?如果没有,看起来以下应该可以工作:Stringcu

java - 使用 DecimalFormat 显示填充零

我正在使用DecimalFormat将double设置为2位小数,如下所示:DecimalFormatdec=newDecimalFormat("#.##");doublerawPercent=((double)(count.getCount().intValue())/(double)(total.intValue()))*100.00;doublepercentage=Double.valueOf(dec.format(rawPercent));它有效,但如果我有一个像20这样的数字,它会给我这个:20.0我想要这个:20.00有什么建议吗? 最佳答案

java - 只显示小数点后两位

这个问题在这里已经有了答案:howtoconvertdoubleto2numberafterthedot?[duplicate](6个回答)关闭9年前。如何得到只有小数点后两位的double值。例如如果i=348842.doublei2=i/60000;tv.setText(String.valueOf(i2));此代码生成5.81403333。但我只想要5.81。那我该怎么办? 最佳答案 使用DecimalFormat.DecimalFormatisaconcretesubclassofNumberFormatthatformat

java - 只显示小数点后两位

这个问题在这里已经有了答案:howtoconvertdoubleto2numberafterthedot?[duplicate](6个回答)关闭9年前。如何得到只有小数点后两位的double值。例如如果i=348842.doublei2=i/60000;tv.setText(String.valueOf(i2));此代码生成5.81403333。但我只想要5.81。那我该怎么办? 最佳答案 使用DecimalFormat.DecimalFormatisaconcretesubclassofNumberFormatthatformat