小编Tro*_*ran的帖子

为什么在string和float之间转换错误?

请参阅下面的示例.

float maxFloat = float.MaxValue;
string s = maxFloat.ToString();
float result = float.Parse(s); // same with Convert.ToSingle(s);

bool mustEqual = (maxFloat == result);
// It returns FALSE, why?
Run Code Online (Sandbox Code Playgroud)

c#

32
推荐指数
2
解决办法
3359
查看次数

如何使用log4j2与不同的日志文件?

我有一个log4j2.xml文件,我配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Properties>
    <Property name="log-path">${sys:catalina.base}/logs</Property>
</Properties>
<Appenders>

    <!-- console appender -->
    <Console name="console-log" target="SYSTEM_OUT">
        <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss} [%t] %c{1} - %msg%n"/>
    </Console>

    <!-- file appender -->
    <RollingFile name="commons-log" fileName="${log-path}/commons.log"
                 filePattern="${log-path}/commons-%d{yyyy-MM-dd}.log">
        <!-- log pattern -->
        <PatternLayout>
            <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss} %c{1} - %msg%n</pattern>
        </PatternLayout>

        <!-- set file size policy -->
        <Policies>
            <TimeBasedTriggeringPolicy />
            <SizeBasedTriggeringPolicy size="5 MB" />
        </Policies>
    </RollingFile>
    <RollingFile name="analytics-log" fileName="${log-path}/analytics.log"
                 filePattern="${log-path}/analytics-%d{yyyy-MM-dd}.log">
        <PatternLayout>
            <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss} %c{1} - %msg%n</pattern>
        </PatternLayout>
        <Policies>
            <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
        </Policies>
    </RollingFile> …
Run Code Online (Sandbox Code Playgroud)

java log4j2

1
推荐指数
2
解决办法
1万
查看次数

错误的我转换ulong - > double - > ulong大号

如果数量很少那么它可以工作,但是数量越大那么它就错了.我的示例代码如下.

    public void TestZZZZZZZZZ() 
    {
        ulong val = ulong.MaxValue;  // val = 18446744073709551615
        string s = string.Format("{0}", val);

        double d = Convert.ToDouble(s);
        ulong result = ((ulong)d;  // result = 0 <-- WRONG

        Assert.AreEqual(val, result);
    }
Run Code Online (Sandbox Code Playgroud)

一些测试数据结果:

  • 如果val = 1229则可以
  • 如果val = 90071992549900000则可以.
  • 如果val = 90071992549900001,则结果= 90071992549900000
  • 如果val = 90071992549900009,则结果= 90071992549900016

我有什么不对吗?请帮忙.

谢谢!

c#

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

标签 统计

c# ×2

java ×1

log4j2 ×1