我无法将长(美分)转换成货币格式.
我的代码:
long doublePayment = 1099; //Should equal $10.99
DecimalFormat dFormat = new DecimalFormat();
String formattedString = dFormat.format(doublePayment);
System.out.println(formattedString);
Run Code Online (Sandbox Code Playgroud)
产量:1,099
我也尝试过:
long doublePayment = 1099;
NumberFormat n = NumberFormat.getCurrencyInstance(Locale.US);
String s = n.format(doublePayment);
System.out.println(s);
Run Code Online (Sandbox Code Playgroud)
由于这是美分,输出应为10.99或10.99美元.
无法弄清楚我做错了什么.谢谢!!!
我正在尝试添加比特币作为货币在我的网站上显示.我有汇率和一切,但IllegalArgumentException每当我使用时我都会收到java.util.Currency.getInstance("BTC").这是有道理的,因为它没有包含在ISO 4217货币代码列表中,也没有包含在Java 7中.我已经看到了几个选项,但没有什么能真正解决我的问题.
根据Java 平台文档,您可以通过创建文件来覆盖特定区域设置的货币$JAVA_HOME/lib/currency.properties.这是一个问题,因为比特币不依赖于特定的区域,也不应该用来代替任何国家的货币.
此 StackOverflow帖子中提供了另一个类似的情况,其中中国有第二个货币代码可供使用,因此解决方案是构建自己的currency.data文件,为中国语言环境添加第二种货币.这样做更好,但仍存在将货币绑定到区域设置的问题.
有没有人遇到这个问题或找到了解决方法?我知道比特币相对较新,但能够以比特币格式显示价格会很酷.
如果您格式化的货币不是当前文化的本机货币,那么格式化货币的正确方法是什么?
例如,如果我为fr-FR文化格式化美元,我会将其格式化为en-US文化($ 1,000.00)或fr-FR文化,但将欧元符号更改为美元符号(1 000,00) $).或许别的东西($ 1 000,00或1 000,00 USD)?
我必须asp:TextBox保持金钱价值,即'1000','1000,0'和'1000,00'(逗号是俄罗斯标准的分隔符).
我ValidationExpression有什么用asp:RegularExpressionValidator呢?
我试过\d+\,\d{0,2}但它不允许没有十进制数字的数字,例如只是'1000'.
Martin Fowler 有一个Money类,有一个货币分配程序.该例程根据给定的比率列表分配资金,而不会通过舍入而损失任何价值.它会将任何余数值传播到结果上.
例如,由"比率"(1,1,1)分配的100美元将产生(34美元,33美元,33美元).
这是allocate功能:
public long[] allocate(long amount, long[] ratios) {
long total = 0;
for (int i = 0; i < ratios.length; i++) total += ratios[i];
long remainder = amount;
long[] results = new long[ratios.length];
for (int i = 0; i < results.length; i++) {
results[i] = amount * ratios[i] / total;
remainder -= results[i];
}
for (int i = 0; i < remainder; i++) {
results[i]++;
}
return results;
}
Run Code Online (Sandbox Code Playgroud)
(为了这个问题,为了简单起见,我冒昧地用long取代Money类型.)
问题是,我怎么知道它是正确的?除了最终的for-loop之外,这一切似乎都是不言而喻的.我认为,为了证明函数是正确的,在最终的for循环中证明以下关系是正确的就足够了:
remainder < …Run Code Online (Sandbox Code Playgroud) 我有一个jqgrid,它的选项 :formatter => "currency"
它将数字转换5为$5.00,但这是一个信用额度,所以我需要将其显示为($5.00)而不是$5.00.
任何建议我应该改变:formatter => "currency"什么?
如何使用decimal模块将小数值保留在2个位置以代表金钱?
我已经设定了精度,并且该死的一切都在附近,并且遇到了失败.
我在巴西,我们的货币格式类似于'R $ 9.999,00'.
我正在尝试选择一个字段,并更改返回的格式.但是,似乎我不能这样做.我试过了:
ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ',.';
Run Code Online (Sandbox Code Playgroud)
和
SELECT to_char(10,'9,999.00', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL
Run Code Online (Sandbox Code Playgroud)
这些都没有奏效.不确定它是否是我的客户端(我在使用sqldeveloper的Ubuntu上),或者我做错了什么.
有任何想法吗?
有谁知道如何在Google Play Dev中更改本国货币?我们的客户已对Google Play进行了帐户管理,并使用其本国货币(而不是$).但现在,他希望将价格定为$而不是他的本国货币,以便不同国家的其他价格将基于$ price.
这是否可以在开发者控制台的设置或其他地方完成.我将非常感谢你的帮助.
谢谢
我需要发送一个包含双值的USSD代码,该代码表示要转移的余额账户金额.该值由整数组成,也可以是小数分隔符和2个以上的数字.我的代码如下:
double doubleValue = 0.70;
String phoneNumber = "51234567", pincode = "1234";
String ast = Uri.encode("*");
String baseUssd = ast + "234" + ast + "1" + ast + phoneNumber + ast + pincode + ast;
StringBuilder builder = new StringBuilder();
builder.append(baseUssd);
builder.append(doubleValue); //i.e: 1.35, 0.80
builder.append(Uri.encode("#"));
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + builder.toString()));
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
我的手机将doubleValue视为135,080等,忽略点分隔符.我希望最终的代码包含"dot",允许发送十进制值.有人解决了这个问题吗?
currency ×10
android ×2
decimal ×2
java ×2
.net ×1
algorithm ×1
allocation ×1
asp.net ×1
bitcoin ×1
c# ×1
comma ×1
format ×1
formatting ×1
google-play ×1
java-7 ×1
jqgrid ×1
jquery ×1
long-integer ×1
oracle ×1
proof ×1
python ×1
python-3.x ×1
regex ×1
separator ×1
ussd ×1