C# 正在尝试替换列表中的双精度值
有人能帮我做这个吗。我试图用相同的值替换该值,但只替换为第一个小数点。正如你在下面看到的,我最终得到了和我开始时一样的结果C# 正在尝试替换列表中的双精度值,c#,asp.net-mvc,C#,Asp.net Mvc,有人能帮我做这个吗。我试图用相同的值替换该值,但只替换为第一个小数点。正如你在下面看到的,我最终得到了和我开始时一样的结果 public class QoutaDataHolder { public double StartTime { get; set; } public double EndTime { get; set; } public double Value { get; set; } public string QoutaRuleID { get; set;
public class QoutaDataHolder
{
public double StartTime { get; set; }
public double EndTime { get; set; }
public double Value { get; set; }
public string QoutaRuleID { get; set; }
}
List<QoutaDataHolder> correctionQoutas
for (int i = 0; i < correctionQoutas.Count; i++)
{
if (correctionQoutas[i].Value % 1 != 0) //Value = 2.88888889
{
var trunkatedValue = Math.Truncate(correctionQoutas[i].Value*10); //28
double newValue = trunkatedValue/10; // Back to 2.88888889!?!?
correctionQoutas[i].Value = newValue; // Want to assign 2.8
}
}
公共类数据持有者
{
公共双起始时间{get;set;}
公共双端时间{get;set;}
公共双值{get;set;}
公共字符串QoutaRuleID{get;set;}
}
列表更正QOUTAS
对于(int i=0;i
编辑:我不想对值进行四舍五入 埃桑·萨贾德是对的。您需要使用Math.Round,第二个参数为1
for (int i = 0; i < correctionQoutas.Count; i++)
{
if (correctionQoutas[i].Value % 1 != 0) //Value = 2.88888889
{
correctionQoutas[i].Value = math.Round(correctionQoutas[i].Value, 1); // Want to assign 2.8
}
}
for(int i=0;i
您可以执行以下操作:
var trunkatedValue = Math.Floor(correctionQoutas[i].Value*10); //28
这里有一个特定于您的问题的解决方案:只需使用转换来获取值
for (int i = 0; i < correctionQoutas.Count; i++)
{
if (correctionQoutas[i].Value % 1 != 0) //Value = 2.88888889
{
var trunkatedValue = (int)(correctionQoutas[i].Value * 10); //28
double newValue = (double)trunkatedValue / 10; // not back to 2.88888889 anymore
correctionQoutas[i].Value = newValue;
}
}
for(int i=0;i
useMath.Round
编辑了我的帖子,我不想对值进行舍入。你能告诉我是什么阻止你使用它吗?我不能复制这个。newValue
的结果是2.8