gpt4 book ai didi

c# - 更改小数的精度

转载 作者:太空宇宙 更新时间:2023-11-03 22:31:14 28 4
gpt4 key购买 nike

我将两个字符串转换为小数:

using System;

class MainClass {
public static void Main (string[] args) {
string aString = "10";
decimal aDecimal = System.Convert.ToDecimal(aString);
Console.WriteLine((decimal)aDecimal);

string bString = "10.00";
decimal bDecimal = System.Convert.ToDecimal(bString);
Console.WriteLine((decimal)bDecimal);
}
}

第一个输出产生 10,第二个输出产生 10.00。

如何将 aDecimal 更改为 10.00 并将 bDecimal 更改为 10? (请注意:我指的是小数,而不是输出字符串表示。)

对于 bDecimalMath.Round(bDecimal,0) 有效;这可能是一个很好的解决方案。对于 aDecimalaDecimal = aDecimal + 0.01m - 0.01m 有效;对于大多数情况,这可能是一个很好的解决方法,但不是真正的解决方案。

我的问题背景是想把号码转入第三方数据库。数据库只接受小数,不接受整数。 10(虽然它在 C# 中是小数类型)被认为是整数,而 10.00 不是。

最佳答案

Decimal 数据类型存储其精度,您可以更改精度而无需使用算术转换为字符串,例如:

decimal d = 10M;
decimal d00 = d * 1.00M;
Console.WriteLine(d00); // 10.00

另见 Adjusting decimal precision, .net

如果你想获得“至少 N 位小数”,你可以使用 Decimal.Add 添加一个具有相关小数位数的零值,例如

decimal d0 = 10m;
decimal d1 = 10.0m;
decimal d2 = 10.00m;
decimal d3 = 10.000m;

Console.WriteLine(Decimal.Add(d0, 0.00m)); // 0.00
Console.WriteLine(Decimal.Add(d1, 0.00m)); // 0.00
Console.WriteLine(Decimal.Add(d2, 0.00m)); // 0.00
Console.WriteLine(Decimal.Add(d3, 0.00m)); // 0.000

关于c# - 更改小数的精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57662342/

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