小编Tak*_*eru的帖子

如果我将数据类型long分配给数据类型float,为什么会出现舍入错误?

我的老师提出的问题是:记下可能发生舍入错误的分配.这是Java.

float f;
long l;
double d;

f = l;
d = l;
Run Code Online (Sandbox Code Playgroud)

这是答案,但为什么呢?float的值和最大值较高,float是浮点数.相比之下,长期只是全数,那为什么会出现舍入错误呢?

java precision types rounding

0
推荐指数
1
解决办法
127
查看次数

使用其他类常量值调用构造函数

我想要一个构造函数调用只允许有限范围的"扩展".假设我有这两个类:

public class Foo
{
    public Foo(Extension ext) 
    { 
        // do something
    }
}

public class Extension
{
    public const string TXT = ".txt";
    public const string XML = ".xml";
}
Run Code Online (Sandbox Code Playgroud)

因此,当另一个开发人员想要使用时,Foo他只能使用Extension类中的值来执行此操作,如下所示:

Foo foo = new Foo(Extension.TXT);
Run Code Online (Sandbox Code Playgroud)

但是当我尝试这样做时,我得到一个IDE错误说:"cannot convert from 'string' to '<ProjectName>.Extension'.

作为一种"解决方法",我可以将我的Extension课程改为:

public class Extension
{
    public enum File
    {
        TXT,
        XML
    }
}
Run Code Online (Sandbox Code Playgroud)

并像这样使用它:

Foo foo = new Foo(Extension.File.TXT);
Run Code Online (Sandbox Code Playgroud)

哪个工作得很好但我不喜欢的是调用是一个更长的级别(类 - >枚举 - >元素而不是类 - >元素).

那么,问题是我的解决方法实际上是唯一有效,正确或最佳实践的解决方案吗?

c# .net-4.6

0
推荐指数
1
解决办法
117
查看次数

标签 统计

.net-4.6 ×1

c# ×1

java ×1

precision ×1

rounding ×1

types ×1