首页 > 解决方案 > 如何将 0 或只有 2 位的小数扩展为 4 位 (#.0000)?

问题描述

我有不同来源的小数和不同的数字。

我需要所有这些,例如:#.0000(4 位数字)

decimal amountOrigin = 12345678.00; //automatically two digits via Newtonsoft.JsonConvert()
decimal amountByOwn = 1234567.0000; //I try to define by my own with 4 digits

decimal amount_A = Decimal.Round(amountOrigin, 4); //=> 12345678.00
decimal amount_B = Decimal.Round(amountOrigin + (decimal)0.000001, 4); //=> 12345678.0000
decimal amount_C = amountByOwn; //=> 1234567

amount_B正在工作,但不是很好。:/

有没有一种简单的方法可以将我的小数四舍五入或扩展为 4 位,即使小数之前的位数更少?像字符串格式一样,但我需要它作为小数,以便以后用它们计算。

我需要 4 位数字,因为比较来自不同来源的哈希值。123.0000 的 md5 散列不同于 123.00 或 123.0,...

-------------------------------------------------- -----

因为我的问题已经结束,所以我的解决方案再次在这里:

它使零短路。所以我可以稍后用它们计算,但是 md5 哈希值是一样的。

public string CreateMd5Hash()
{
    using (MD5 md5 = MD5.Create())
    {
        Md5Hash = BitConverter.ToString(md5.ComputeHash(Encoding.ASCII.GetBytes(
            ShopStatus +
            ApiCustomerId +
            CustomerFirstName +
            CustomerLastName +
            ApiCreditAccountId +
            Decimal.Round(new Decimal((double)CurrentAmount), 4) +
            Decimal.Round(new Decimal((double)OriginalAmount), 4) +
            Decimal.Round(new Decimal((double)RevokedAmount), 4) +
            OrderDate +
            DeliveryDate +
            InvoiceDate +
            ReversalDate +
            ReversalEntryDate +
            ReversalBookedDate
        ))).Replace("-", string.Empty).ToLower();
    }
    return Md5Hash;
}

感谢@Olivier Rogier 的思考。:D

标签: c#decimaldigits

解决方案


推荐阅读