标签: currency

php - 使用 sprintf 添加“+”号从格式化数字中删除小数

我想这样做来显示股票指数的变化:

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.

有没有一种有效的方法来同时获得+号和小数?

php printf currency number-formatting

1
推荐指数
1
解决办法
609
查看次数

获取语​​言环境的货币符号

如何获取给定货币字符串(“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 = valueWithoutCurrency
Run 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)

javascript locale symbols currency

1
推荐指数
3
解决办法
8960
查看次数

如何在 Php 中使用谷歌货币 API 转换货币?

我通过使用 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)

php api currency

1
推荐指数
1
解决办法
2万
查看次数

BigDecimal setScale 使用舍入模式一半甚至不起作用

有人请告诉我我做的错误:

我有号码: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但根本没有用)

java currency rounding bigdecimal

1
推荐指数
1
解决办法
1266
查看次数

使用moneyphp计算税收

我正在使用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美分。

  • 有没有办法用 Money 包处理这些情况?
  • 如果没有,那么是否有另一个包可以处理这个问题?

php currency tax money-php

1
推荐指数
1
解决办法
722
查看次数

哪一种是支持多币种货币价值的最佳数据库设计?

我想知道在数据库中存储多币种货币价值的最佳数据库设计。例如,我有一个具有两个货币字段的实体。对于每条记录,这些字段可能具有不同的货币类型。

例子:

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 欧元,而且我无法将所有价值存储在一种货币(如美元)中。

我想知道在数据库中存储这些值的最佳和更有效的设计是什么。我应该存储量和货币符号与字符串数据类型一列或者是更好地界定MoneyCurrency表作为存储货币价值单独的表?还是其他设计?

database database-design currency

1
推荐指数
1
解决办法
1964
查看次数

flutter nosuchmethoderror 类字符串没有实例 getter 'isnegative'

我正在遵循一个教程,尝试创建一个水平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)

currency number-formatting flutter

1
推荐指数
1
解决办法
2万
查看次数

为什么当我使用 Intl.NumberFormat 格式化为欧元时,最后一位数字和 € 之间的空格与空格键不同?

我想知道为什么欧元的货币格式化程序使用与按空格键时产生的正常空格不同的空格。这是一个代码示例,显示比较字符串变得复杂,特别是当我尝试对货币格式进行测试时。

\n

\r\n
\r\n
const 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
\r\n
\r\n

\n

javascript unicode whitespace currency euro

1
推荐指数
1
解决办法
374
查看次数

应该由前端还是后端处理货币转换?

我有一个市场,人们可以在其中以本国货币出售他们的产品。来自世界各地的人们都可以购买他们的产品,但始终以产品卖家的货币收费。

因此,如果德国卖家向英国某人出售商品,英国买家将以欧元支付。

但我希望用户能够看到以当地货币表示的价格,并且他们可以通过某些界面选择当地货币。

所以我的问题是:谁应该拥有货币兑换权?

后端是否应该仅以“原始”货币(卖方定义的货币)存储“原始”价格,而前端根据用户的偏好处理货币转换?或者后端应该处理转换并将任何货币的价格提供回前端?

从可扩展性的角度来看,我们目前只使用几种不同的货币,但我们计划扩展到几种新的货币(可能是几十种)。

我们的产品涉及网站、iOS 和 Android 原生应用程序,它们都应该以相同的方式工作。

architecture frontend currency backend

1
推荐指数
1
解决办法
984
查看次数

BigDecimal有多大可能导致POS程序出现内存问题?

我知道BigDecimal是表达货币的最准确方式,因为将货币值视为浮点数据类型往往会导致舍入错误.但是,我也明白BigDecimal计算需要更多内存.那就是说,使用BigDecimal而不是浮点数或双倍真的是处理货币价值的程序的最佳实践?如果我制作一个程序打印餐厅每个订单的逐项收据,如果我使用BigDecimal,或者如果我使用浮点值更可能会出现舍入错误,我是否更有可能耗尽内存?

(注意:"如何处理Java BigDecimal性能?"是一个稍微类似的问题,但我更关心的是相对简单的快餐交易中风险最小的选项.)

java floating-point double currency bigdecimal

0
推荐指数
1
解决办法
52
查看次数