Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何截断双数据类型值变量_C# - Fatal编程技术网

C# 如何截断双数据类型值变量

C# 如何截断双数据类型值变量,c#,C#,我有课 public class Score { public double marks { get; set; } } 现在在我的代码中 List<Level1> Obj= new List<Level1>(); Score Object= new Score(); l1.marks=94.345454; Obj.Add(Object) List Obj=new List(); 分数对象=新分数(); l1.分数=94.345454; 对象添加(对象)

我有课

public class Score
{
    public double  marks { get; set; }
}
现在在我的代码中

List<Level1> Obj= new List<Level1>();
 Score Object= new Score();
 l1.marks=94.345454;
Obj.Add(Object)
List Obj=new List();
分数对象=新分数();
l1.分数=94.345454;
对象添加(对象)
//现在在将对象添加到列表时,我需要将值trunacte到 94.34并存储在列表obj中。 所以我需要得到的输出是94.34 我该怎么做呢。 提前感谢

prince

您可以在
标记
属性设置器中执行此操作:

value -= value % 0.01
这将从
值中减去0.005454,因此留下正确的小数点数(在本例中为2)

比如:

public class Score {
    private double m_marks;

    public double marks {
        get { return m_marks; }
        set { m_marks = value - (value % 0.01); }
    }
}

将该值保留为双精度,并且仅在输出时格式化

string output = doubleValue.ToString("F2");
。例如:

doubleNumber = -1898300.1987;
Console.WriteLine(doubleNumber.ToString("F1", CultureInfo.InvariantCulture));  
// Displays -1898300.2

Console.WriteLine(doubleNumber.ToString("F3", 
                  CultureInfo.CreateSpecificCulture("es-ES")));
// Displays -1898300,199  

当区域性设置为西班牙语时,请注意最后一次输出中的小数点逗号。

您可以使用Math.Round(数字、精度),如图所示,您将收到级别1的编译时错误和分数类型不匹配。这是double的扩展方法吗?+1我同意。在内部保持数字的完全精度,并在输出时截断,尽管这是四舍五入而不是截断。我认为这也是正确的行为,但OP要求截断。有关截断,请参见此答案: