gpt4 book ai didi

c# - Javascript 舍入 v C# 舍入

转载 作者:行者123 更新时间:2023-11-29 18:35:42 27 4
gpt4 key购买 nike

我在 ASP.NET MVC 中有一个发票页面。

我正在计算 GST。

在 javascript 中这是结果。

165.45 * 0.1 = 16.544999999999998

在 C# 中我得到

165.45 * 0.1 = 16.545

这些圆形不同

我想将两者四舍五入到小数点后两位,但他们给出了不同的答案

Javascript = 16.54

C# = 16.55 这就是我想要的。

有什么想法可以让它们相同吗??

最佳答案

在 C# 中,如果您使用 double,您不会真正得到 16.55 - 它可能打印出那个值,但这不是真正的值。在这两种情况下,您都应该使用基于十进制的类型而不是基于二进制的类型。在 C# 中,这很简单 - 您可以使用 decimal(又名 System.Decimal)类型。不幸的是,我不知道 JavaScript 中是否有等效项。

您可能应该阅读 binary floating pointdecimal floating point了解为什么这很重要。 (这些都是以 .NET 为中心的文章,但这些原则也适用于 JS。)

对于货币值,避免这成为问题的一种方法是使用整数开始 - 将便士(美分,无论什么)的数量保留在您的值(value)中,然后通过写出 (number/100) + "."+ (number % 100)(必要时使用不同的小数分隔符)。我强烈怀疑您会发现这是针对这种特定情况获得一致且可预测结果的最佳方式。

关于c# - Javascript 舍入 v C# 舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3491079/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com