我有一个小的疯狂方法,将BigDecimal值转换为漂亮可读的字符串.
private String formatBigDecimal(BigDecimal bd){
DecimalFormat df = new DecimalFormat();
df.setMinimumFractionDigits(3);
df.setMaximumFractionDigits(3);
df.setMinimumIntegerDigits(1);
df.setMaximumIntegerDigits(3);
df.setGroupingSize(20);
return df.format(bd);
}
Run Code Online (Sandbox Code Playgroud)
然而,它还产生了一个所谓的分组分隔符",",它使我的所有值都出现如下:
xxx,xxx
Run Code Online (Sandbox Code Playgroud)
我确实需要分隔符是点或点而不是逗号.有没有人知道如何完成这个小壮举?
我已阅读本,尤其是这个,现在死,但我无法找到一个方法来完成这件事.我是以错误的方式接近这个吗?这样做有更优雅的方式吗?甚至可能是一个解决不同本地数字表示的解决方案,因为逗号将完全符合欧洲标准.
例如,我有变量3.545555555,我想截断到3.54.
我有这个字符串:10,692,467,440,017.120(这是一个金额).
我想将它解析为BigDecimal.问题是我尝试了DecimalFormat和NumbeFormat都是徒劳的.有帮助吗?
我正在使用DecimalFormat将双精度格式化为2位小数,如下所示:
DecimalFormat dec = new DecimalFormat("#.##");
double rawPercent = ( (double)(count.getCount().intValue()) /
(double)(total.intValue()) ) * 100.00;
double percentage = Double.valueOf(dec.format(rawPercent));
Run Code Online (Sandbox Code Playgroud)
它工作,但如果我有一个像20这样的数字,它给了我这个:
20.0
Run Code Online (Sandbox Code Playgroud)
我想要这个:
20.00
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我想使用Java的DecimalFormat来格式化双打,如下所示:
#1 - 100 -> $100
#2 - 100.5 -> $100.50
#3 - 100.41 -> $100.41
Run Code Online (Sandbox Code Playgroud)
到目前为止我能想出的最好的是:
new DecimalFormat("'$'0.##");
Run Code Online (Sandbox Code Playgroud)
但这不适用于案例#2,而是输出"$ 100.5"
编辑:
很多这些答案只考虑案例#2和#3而没有意识到他们的解决方案会导致#1将100格式化为"$ 100.00"而不仅仅是"$ 100".
我面临一个问题,我需要用一个数字做一些计算,例如5000,00乘以 ( 1,025^3 )。
所以在这种情况下 5000,00 * (1,025^3) = 5385,45
所以我的问题是,我怎么能格式化数字5385,45要像5.385,45使用十进制格式可能?
我自己尝试过,我做了这段代码,在应用程序中输出 5385,45 但不是5.385,45
var interestValue = (5000,00*(Math.pow(1.025,yearValue)))
val number = java.lang.Double.valueOf(interestValue)
val dec = DecimalFormat("#,00")
val credits = dec.format(number)
vValueInterest.text = credits
Run Code Online (Sandbox Code Playgroud) Laravel没有验证decimal,所以我需要一个regex或其他验证方法来验证数值0 - 99.99
我试过了
required|regex:^\d{0,2}(\.\d{1,2})?$/
required|regex:[1-9]\d?(\.\d\d?)?|0\.[1-9]\d?||0\.0[1-9]
required|regex:/[1-9]\d?(\.\d\d?)?|0\.[1-9]\d?||0\.0[1-9]/
required|regex:/[\d]{2}.[\d]{2}/
required|regex:/[\d]{0-2}.[\d]{0,2}/
Run Code Online (Sandbox Code Playgroud)
我要么在尝试输入时使用"无效格式",要么输入0.05未知修饰符preg_match
任何有关regex验证小数的方法的帮助laravel都是值得赞赏的(在十进制之前或之后有可选值
我DecimalFormat在Edittext的addTextChangedListener方法中有自定义,一切都很完美,但是当我更改语言(语言环境)时,我的addTextChangedListener无效.
double answer = inputDouble * counterToDouble;
DecimalFormat df = new DecimalFormat("##.########");
// df=(DecimalFormat)numberFormat;
df.setRoundingMode(RoundingMode.DOWN);
answer = Double.parseDouble(df.format(answer));
unicoinsAmmount.setText(String.valueOf(df.format(answer)));
Run Code Online (Sandbox Code Playgroud)
我搜索了我的问题并找到了NumberFormat解决方案:
NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.US);
Run Code Online (Sandbox Code Playgroud)
但我不知道如何使用这段代码.
我试图完全理解DecimalFormat的确切行为.我目前正在用这个类的科学记谱功能进行一些测试.而且我在调整科学记数法中有效位数的确切问题时遇到了问题.根据Java 7的Javadoc:
尾数中的有效位数是最小整数和最大小数位的总和,并且不受最大整数位数的影响.例如,用"## 0.## E0"格式化的12345是"12.3E3".要显示所有数字,请将有效数字计数设置为零.有效位数不会影响解析.
因此,我正在测试它:
DecimalFormat formatone = new DecimalFormat("##0.##E0");
System.out.println(formatone.format(toF));
Run Code Online (Sandbox Code Playgroud)
我获得以下输出:
12,345E3
Run Code Online (Sandbox Code Playgroud)
根据我刚刚展示的Javadoc的摘录,我想我应该获得
12.3E3
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么 ?我理解错了吗?
在此先感谢您的所有澄清:-)
我正在尝试在Java程序中格式化一些数字.数字将是双精度数和整数数.处理双精度时,我想只保留两个小数点,但在处理整数时,我希望程序保持不受影响.换一种说法:
双打 - 输入
14.0184849945
Run Code Online (Sandbox Code Playgroud)
双打 - 输出
14.01
Run Code Online (Sandbox Code Playgroud)
整数 - 输入
13
Run Code Online (Sandbox Code Playgroud)
整数 - 输出
13 (not 13.00)
Run Code Online (Sandbox Code Playgroud)
有没有办法在同一个 DecimalFormat实例中实现它?到目前为止,我的代码如下:
DecimalFormat df = new DecimalFormat("#,###,##0.00");
DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(Locale.ENGLISH);
otherSymbols.setDecimalSeparator('.');
otherSymbols.setGroupingSeparator(',');
df.setDecimalFormatSymbols(otherSymbols);
Run Code Online (Sandbox Code Playgroud) decimalformat ×10
java ×8
android ×3
bigdecimal ×3
double ×2
formatting ×2
integer ×1
kotlin ×1
laravel-5 ×1
parsing ×1
regex ×1
string ×1
truncate ×1
validation ×1