我想这样做来显示股票指数的变化:
12 => +12.00
150.5 => +150.50
-30.2 => -30.20
-2.85193 => -2.85
Run Code Online (Sandbox Code Playgroud)
我有这个:
sprintf("%+d", number_format(floatval($key), 2, '.', ','))
但它从格式化的数字中去除小数并返回诸如+45.
有没有一种有效的方法来同时获得+号和小数?
如何获取给定货币字符串(“GBP”、“USD”等)的货币符号?我想出的最好的似乎冗长可笑,还有其他方法还是我最好使用查找表?
const userLocale = "EN-gb";
const userCurrency = "GBP";
const withValueEl = document.querySelector(".withValue");
const withoutValueEl = document.querySelector(".withoutValue");
const valueWithCurrency = Number(0).toLocaleString(userLocale, {
style: "currency",
currency: userCurrency,
minimumFractionDigits: 2
});
const valueWithoutCurrency = valueWithCurrency.replace(Number(0).toLocaleString(userLocale, {
minimumFractionDigits: 2
}), "")
withValueEl.innerHTML = valueWithCurrency
withoutValueEl.innerHTML = valueWithoutCurrencyRun Code Online (Sandbox Code Playgroud)
With value:<span class="withValue"></span><br /> Without value:<span class="withoutValue"></span><br />Run Code Online (Sandbox Code Playgroud)
我通过使用 file_get_content 在 php 中使用谷歌货币转换 API,但由于出现错误而无法获取输出,那么如何通过在 Php 中使用以下 API 来转换任何货币。
<?php
function convertCurrency($amount, $from, $to)
{
$url = "http://www.google.com/finance/converter?a=$amount&from=$from&to=$to";
$data = file_get_contents($url);
preg_match("/<span class=bld>(.*)<\/span>/",$data, $converted);
return $converted[1];
}
echo convertCurrency(1500, 'USD', 'INR');
?>
Run Code Online (Sandbox Code Playgroud)
出现这样的错误
Message: file_get_contents(http://www.google.com/finance/converter?a=1500&from=USD&to=INR): failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden
Run Code Online (Sandbox Code Playgroud)

有人请告诉我我做的错误:
我有号码:225.0453,内部保存有 4 位数字。这是一个美元货币数字,我想要漂亮的打印显示。我用RoundingMode.HALF_EVEN
由于美元使用 2 个小数位数,因此半偶数四舍五入的数字应为 225.04 美元。但我得到 225.05 美元。
这是我的代码(我将其更改为创建 MWE):
@Override
public String toString() {
Currency cur = Currency.getInstance("USD");
BigDecimal result = new BigDecimal("225.0453");
result = result.setScale(cur.getDefaultFractionDigits(),RoundingMode.HALF_EVEN);
NumberFormat nf = NumberFormat.getCurrencyInstance();
nf.setCurrency(cur);
nf.setMaximumFractionDigits(cur.getDefaultFractionDigits());
return nf.format(result.doubleValue());
}
Run Code Online (Sandbox Code Playgroud)
此外,我也很乐意提供更好的解决方案,因为这似乎不太正确。(我试过了,nf.setRoundingMode但根本没有用)
我正在使用moneyphp/money类来存储货币价值。但是,在计算所欠税款时,我遇到了一个问题,即计算出的税款是小数,而图书馆正在寻找一个整数值。
例子:
$invoiceTotal = new Money("155" new Currency("USD")); //$1.55
$taxRate= 0.065;
$invoiceTotalWithTax = $invoiceTotal->multiply($taxRate);
echo $invoiceTotalWithTax; //0.10 whereas actual value is 1.55*0.065 = 0.10075
$formatter = new DecimalMoneyFormatter();
$formatter->format($invoiceTotalWithTax); //will return $0.10
Run Code Online (Sandbox Code Playgroud)
从上面的例子中,一些分数的分值正在丢失。个人来说不算多,但是如果我们在一个纳税期内处理几千张发票,最终征收的总税款会超过1美分。
我想知道在数据库中存储多币种货币价值的最佳数据库设计。例如,我有一个具有两个货币字段的实体。对于每条记录,这些字段可能具有不同的货币类型。
例子:
Table A:
-------------
Id
Name
Amount1
Amount2
Run Code Online (Sandbox Code Playgroud)
样本记录:
Id Name Amount1 Amount2
1 aaa 12$ 15£
2 bbb 30€ 17$
Run Code Online (Sandbox Code Playgroud)
我无法以一种货币存储价值。例如,我想借钱给某人。我将它的数据存储在一个表中。金钱的类型可以不同。当我借给某人 10 欧元时,我应该收回 10 欧元,而且我无法将所有价值存储在一种货币(如美元)中。
我想知道在数据库中存储这些值的最佳和更有效的设计是什么。我应该存储量和货币符号与字符串数据类型一列或者是更好地界定Money和Currency表作为存储货币价值单独的表?还是其他设计?
我正在遵循一个教程,尝试创建一个水平SingleChildScrollView,其中包含带有产品描述的对象和带有两位小数的货币+价格标签。实现NumberFormat.currency方法返回错误:NoSuchMethodError 类“String”没有实例 getter“isNegative”
有人可以帮助理解为什么它没有拉动“价格”价值吗?如果我对其进行硬编码并为最终的双倍价格分配一个值=即:29.90;在AngeboteCard()类中它可以,但在Angebote()类中则不是。
这是我的课:
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:hotz/constants.dart';
import 'package:intl/intl.dart';
import 'package:intl/number_symbols.dart';
class Angebote extends StatelessWidget {
const Angebote({
Key key,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Row(
children: <Widget>[
AngeboteCard(
image: "assets/images/pork_belly.png",
product: "Schweinsbrust frisch",
price: 29.90,
press: () {},
),
],
),
);
}
}
class AngeboteCard extends StatelessWidget { …Run Code Online (Sandbox Code Playgroud) 我想知道为什么欧元的货币格式化程序使用与按空格键时产生的正常空格不同的空格。这是一个代码示例,显示比较字符串变得复杂,特别是当我尝试对货币格式进行测试时。
\nconst number = 123456.789;\nlet curr = new Intl.NumberFormat(\'de-DE\', { style: \'currency\', currency: \'EUR\' }).format(number)\nconsole.log(curr); // expected output: "123.456,79 \xe2\x82\xac"\nconsole.log("123.456,79 \xe2\x82\xac" === curr) // Expected output: true -> but it outputs false!Run Code Online (Sandbox Code Playgroud)\r\n我有一个市场,人们可以在其中以本国货币出售他们的产品。来自世界各地的人们都可以购买他们的产品,但始终以产品卖家的货币收费。
因此,如果德国卖家向英国某人出售商品,英国买家将以欧元支付。
但我希望用户能够看到以当地货币表示的价格,并且他们可以通过某些界面选择当地货币。
所以我的问题是:谁应该拥有货币兑换权?
后端是否应该仅以“原始”货币(卖方定义的货币)存储“原始”价格,而前端根据用户的偏好处理货币转换?或者后端应该处理转换并将任何货币的价格提供回前端?
从可扩展性的角度来看,我们目前只使用几种不同的货币,但我们计划扩展到几种新的货币(可能是几十种)。
我们的产品涉及网站、iOS 和 Android 原生应用程序,它们都应该以相同的方式工作。
我知道BigDecimal是表达货币的最准确方式,因为将货币值视为浮点数据类型往往会导致舍入错误.但是,我也明白BigDecimal计算需要更多内存.那就是说,使用BigDecimal而不是浮点数或双倍真的是处理货币价值的程序的最佳实践?如果我制作一个程序打印餐厅每个订单的逐项收据,如果我使用BigDecimal,或者如果我使用浮点值更可能会出现舍入错误,我是否更有可能耗尽内存?
(注意:"如何处理Java BigDecimal性能?"是一个稍微类似的问题,但我更关心的是相对简单的快餐交易中风险最小的选项.)