相关疑难解决方法(0)

在java中舍入到最接近的0.05的最佳方法

考虑到除食品外的所有商品均适用10%的税.此外,进口商品还需缴纳5%的附加税.

如果音乐CD的费用是12.49.该项目的税金为1.499.如果进口香水瓶的成本为47.50,则该项目的税率为7.125

有一项政策规定,项目的税收应四舍五入到最接近的0.05.因此,1.499应四舍五入为1.5,7.125应四舍五入为7.25.

使用逻辑可以实现上述舍入要求:

    (float) Math.ceil(taxAmount / 0.05f) * 0.05f;
Run Code Online (Sandbox Code Playgroud)

将税收添加到项目的成本中会给出:

音乐CD:12.49 + 1.5 = 13.99进口巧克力盒:47.50 + 7.25 = 54.65.

我面临以下输入的问题:

如果进口巧克力盒的成本是11.85,则税率为0.5925

使用舍入政策,四舍五入后的税率为0.6.

当我们添加11.85 + 0.6这两个都是浮点数时,我们得到结果为12.450001.与其他输入不同,此特定输入提供了大量小数位,而不是其他输出中的2位小数.

我尝试使用BigDecimal而不是float来存储所有值,并将比例设置为2位小数.这种方法的问题是,如果未指定舍入策略,bigDecimal将在某些情况下抛出异常.为BigDecimal提供舍入策略会导致项目的总成本和适用的税收使用提供给BigDecimal的舍入策略进行舍入,从而改变所需的输出.

java rounding bigdecimal

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

Python 3 - 将字符串转换为数字

我与Python和Django的工作,我有这样的问题:我有不同的变量存储对象的价格,所有的人都像一个格式350.32182.40等...

我的问题是这些数字是字符串,但在我的函数中,我必须将它们相加才能达到总数,而 python 不会让我这样做,因为它无法对字符串求和。我试过int(), float(), format(), 和Decimal(),但它们总是给我一个只有一个十进制数或其他不正确值的值。我需要 2 个十进制数字,我需要将它们全部相加的可能性。我该怎么做?

PS:抱歉任何英语错误,我是意大利人。

python django int sum decimal

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

Java随机数介于0和0.06之间

在Java中,我需要在0和之间随机生成一个数字0.06.

我在这里看到另一个问题,下面的代码可以解决这个问题:

Random generator = new Random();
double number = generator.nextDouble() * .06;
Run Code Online (Sandbox Code Playgroud)

然而,这样做给了我很长的数字,0.007044013589130205而且0.03656588431980957,我认为这不是我的导师所期待的.

反正有没有生成0到0.06之间只有两位或三位小数的随机数?

java random

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

为什么十进制浮点数应该用于财务计算,同时它有舍入误差

我目前正在使用c ++从事与股票市场相关的项目,涉及很多浮动类型,如价格和指数.

我读了很多说你应该在货币相关算术中使用十进制浮点数. 为什么不使用Double或Float来表示货币? .NET中的decimal,float和double之间的区别?

根据我的理解,浮点数和十进制浮点数之间的区别在于指数部分被解释的基数,浮点数使用2作为基数,十进制浮点数使用10.当使用十进制浮点数时,你仍然有舍入错误,你仍然无法表达1/3 (纠正我,如果我错了),我想很有可能将某人的账户余额乘以30%然后发生轮回错误,经过几次计算后,舍入误差可能会传播得更严重.除了更大的数字范围,为什么我应该在金融算术中使用十进制浮点数?

c++ floating-point bigdecimal

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

Swift将货币字符串转换为double

我有一个字符串,"$4,102.33"需要转换为double.这将永远是美国.我唯一的办法是去掉了一个黑客$,,然后转换为加倍.似乎NSFormatter只允许我转换为货币而不是转换货币.是否有内置功能或更好的方式除了删除$,?在将其转换为双倍之前?

currency nsformatter swift

3
推荐指数
2
解决办法
5552
查看次数

Swift 在十进制格式中失去精度

使用小数类型处理货币输入时,我遇到精度问题。问题出在格式化程序上。这是游乐场中最小的可重现代码:

let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.isLenient = true
formatter.maximumFractionDigits = 2
formatter.generatesDecimalNumbers = true

let text = "89806.9"
let decimal = formatter.number(from: text)?.decimalValue ?? .zero
let string = "\(decimal)"
print(string)
Run Code Online (Sandbox Code Playgroud)

它打印出来89806.89999999999而不是89806.9. 然而,大多数其他数字都很好(例如8980.9)。所以我不认为这是双精度与小数的问题。

编辑:

我需要使用格式化程序的原因是有时我需要处理货币格式输入:

let text = "$89,806.9"
let decimal = formatter.number(from: text)?.decimalValue ?? .zero
print("\(decimal)") // prints 89806.89999999999

let text2 = "$89,806.9"
let decimal2 = Decimal(string: text2)
print("\(decimal2)") // prints nil

Run Code Online (Sandbox Code Playgroud)

swift

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

双倍显示很长的数字

我有一个简单的计算,使用双打,但我得到一个意想不到的结果,我不明白为什么?

import java.util.Scanner;
public class VersatileSnitSoft {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Scanner myScanner = new Scanner(System.in);
        double amount;
        System.out.print("What’s the price of a CD-ROM? ");
        amount = myScanner.nextDouble();
        amount = amount + 25.00;
        System.out.print("We will bill $");
        System.out.print(amount); 
        System.out.println(" to your credit card.");

    }

}
Run Code Online (Sandbox Code Playgroud)

如果我输入2.99,我得到的结果是......

We will bill $27.990000000000002 to your credit card.
Run Code Online (Sandbox Code Playgroud)

java

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

有人可以解释指针指针的工作原理吗?

我真的不明白指针指针是如何工作的.没有使用指针指针的任何方式做同样的工作?

struct customer
{
    char name[20];
    char surname[20];
    int code;
    float money;
};
typedef struct customer customer;
void inserts(customer **tmp)
{
    *tmp = (customer *)malloc(sizeof(customer));
    puts("Give me a customer name, surname code and money");
    scanf("%s %s %d %f", (*tmp)->name, (*tmp)->surname, &(*tmp)->code, &(*tmp)->money);
}
Run Code Online (Sandbox Code Playgroud)

c malloc struct pointers

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

在 Swift 中为摊销计划创建循环

我正在寻找一个简单的循环来计算 Swift 中的摊销时间表。

到目前为止,这是我在 Playground 上的设置:

let loanAmount: Double = 250000.00
let intRate: Double = 4.0
let years: Double = 30.0

var r: Double = intRate / 1200
var n: Double = years * 12
var rPower: Double = pow(1 + r, n)

var monthlyPayment: Double = loanAmount * r * rPower / (rPower - 1)
var annualPayment: Double = monthlyPayment * 12
Run Code Online (Sandbox Code Playgroud)

对于实际循环,我不确定如何修复下面的代码。

for i in 0...360 {

  var interestPayment: Double = loanAmount * r
  var principalPayment: Double = …
Run Code Online (Sandbox Code Playgroud)

loops amortization ios swift

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

JSON API中最好的格式/类型是什么

基本上我在考虑浮点数或字符串.

字符串:

"10.00"
"10.05"
"10.50"
"1,000"
Run Code Online (Sandbox Code Playgroud)

浮点数

10
10.05
10.5
1000
Run Code Online (Sandbox Code Playgroud)

我喜欢字符串的格式化,浮点数限制精度可能存在问题.

你会选择什么?为什么?

javascript formatting json types currency

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