java - 多线程、性能和精度考虑

标签 java multithreading precision currency money-format

考虑以下类:

public class Money {
    private double amount;

    public Money(double amount) {
        super();
        this.amount = amount;
    }

    public double getAmount() {
        return amount;
    }

    public void setAmount(double amount) {
        this.amount = amount;
    }

    public Money multiplyBy( int factor) {
        this.amount *= factor;
        return this;
    }
}

我可以采取哪些预防措施来确保此类在多线程方面没有任何问题。有良好的表现。同时确保货币精度不会出现问题

最佳答案

艾哈迈德,你的问题很模糊。

关于多线程:不清楚您所说的多线程问题是什么意思。例如,该类在同步良好的意义上没有任何多线程问题,但您仍然可以将 Money 对象的状态设置为困惑,由多个线程使用它:

public class Money {
    private volatile double amount;

    public Money(double amount) {
        super();
        this.amount = amount;
    }

    public double getAmount() {
        return amount;
    }

    public synchronized void setAmount(double amount) {
        this.amount = amount;
    }

    public synchronized Money multiplyBy( int factor) {
        this.amount *= factor;
        return this;
    }
}

关于货币精度:正如 Andreas 回答的那样,请参阅:Why not use Double or Float to represent currency? 。另外,这个可能很有趣:What is the best data type to use for money in Java app?

关于java - 多线程、性能和精度考虑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52522864/

相关文章:

java - 很好地打印 Java 集合(toString 不返回漂亮的输出)

c# - 单例实现在 32 位但不是 64 位上工作正常

math - float 学有问题吗?

r - 以接近 0 和 1 的概率进行计算时,如何提高 R 的精度?

java - libgdx 中的对象速度

java - 创建 JavaFX Video Player 类的实例

python - 将队列传递给线程池 - Python

java - 关闭ExecutorService

Python:为什么事件调度程序一直在漂移,有没有办法解决这个问题?

java - 我可以从 Java 读取 BerkeleyDB(非 Java 版本)文件吗?