对于一个MMORPG魔兽世界我试图写一个lib.该游戏中的钱存储为整数,而游戏货币不是整数,它基于金币,银币和铜币.
每100个铜是1个银,每100个银是1个金.
现在我需要将这样的整数转换为WoW Money格式:例如
123123应该返回:
23c 31s 12g
任何人都知道如何做到这一点
我目前正试图找出组织我正在进行的项目的最佳方法.它将成为人们可以使用的SDK.
但是,我对组织这个项目有些不满.我有一些名称空间和一些项目.这些项目编译成不同的DLL.
当我编译所有时,我有以下程序集:
Application
Application.Entities
Application.DataAccess
Run Code Online (Sandbox Code Playgroud)
但是,在那些程序集中仍然有一些不同的命名空间,比如
Application.DataAccess.SourceProviders
Application.DataAccess.SourceParser
Run Code Online (Sandbox Code Playgroud)
所以你可以看到我对此并不十分一致.我没有为每个命名空间创建不同的程序集,因为我觉得它不会增加10+ dll的值.
但我在这里有一些问题,所以我可以决定我将如何做.
干杯,
蒂莫
我有一个包含(一个或多个......)双打的课程.例如:
public class TestFloatClass{
public double Double1{get;set;}
public double Double2{get;set;}
public void SetDoubleByCalculation(double value){
Double1 = //Some calculations here;
Double2 = //Some calculations here;
}
}
Run Code Online (Sandbox Code Playgroud)
我想测试SetDoubleByCalculation(double value)方法,所以我开始编写单元测试.
TestFloatClass expected = new TestFloatClass();
expected.Double1 = 100.10;
expected.Double2 = 200.24554;
TestFloatClass actual = new TestFloatClass();
actual.SetDoubleByCalculation(Math.PI); //Just using something random here.
Run Code Online (Sandbox Code Playgroud)
在这种情况下,expected.Double1并且actual.Double1大致相同.但不完全是由于浮点精度.
但是,我不确定如何正确地进行单元测试.这些是我到目前为止所尝试过的.
在equals运算符中包含某个delta
我的第一个直觉说,好吧,只需在equals运算符中包含逻辑,如下所示:
public override bool Equals(object obj){
return Math.Abs(this.Double1 - obj.Double1) <= 0.00001 &&
Math.Abs(this.Double1 - obj.Double1) <= 0.00001;
}
Run Code Online (Sandbox Code Playgroud)
但正如在这个Hashcode实现双精度 …
我正在搜索BinaryReader.Skip函数,而我在msdn上遇到了这个功能请求.他说你可以使用它来提供你自己的BinaryReader.Skip()函数.
只看这段代码,我想知道为什么他选择这种方式跳过一定数量的字节:
for (int i = 0, i < count; i++) {
reader.ReadByte();
}
Run Code Online (Sandbox Code Playgroud)
它和之间有区别吗:
reader.ReadBytes(count);
Run Code Online (Sandbox Code Playgroud)
即使它只是一个小的优化,我也不愿意.因为现在它对我来说没有意义,为什么你会使用for循环.
public void Skip(this BinaryReader reader, int count) {
if (reader.BaseStream.CanSeek) {
reader.BaseStream.Seek(count, SeekOffset.Current);
}
else {
for (int i = 0, i < count; i++) {
reader.ReadByte();
}
}
}
Run Code Online (Sandbox Code Playgroud) 当我遇到一些我想知道的东西时,我正在弄乱一些二进制文件的解析.
该Stream.Position属性属于Int64或类型long.为什么是这样?使用a是不是更有意义,UInt64因为流中的位置不能为负?
任何人都知道这是一个签名长而不是未签名长的用途?
我有一个以块的形式读取文件的函数.
public static DataObject ReadNextFile(){ ...}
Run Code Online (Sandbox Code Playgroud)
dataobject看起来像这样:
public DataObject
{
public string Category { get; set; }
// And other members ...
}
Run Code Online (Sandbox Code Playgroud)
基本上我想做的是以下内容
List<DataObject> dataObjects = new List<DataObject>();
while(ReadNextFile().Category == "category")
{
dataObjects.Add(^^^^^ the thingy in the while);
}
Run Code Online (Sandbox Code Playgroud)
我知道它可能不是这样做的,因为我如何访问我刚读过的对象.
我目前正在编写一个网络刮刀,可以从互联网上检索信息.简化它看起来像这样.
数据访问项目
现在,我正在创建实际的解析器,我将使用它像这样:
using Application.DataAccess;
using Application.DataAccess.Entities;
namespace Application{
public class TestScraper{
public static ScrapeIt()
{
var source = DataAcces.Retriever.Retrieve("http://example.com");
DataAccess.Entities.Entity entity = DataAccess.Parser.Parse(source);
//Do stuf with source here.
}
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,Parser返回一个实体.然而,这是在DataAccess名称空间中,但它没有意义......它是一个圆圈,我真的不知道如何解决这个问题.好吧,我可以想出一些东西,比如在这些层之间创建另一层.
但我只是想知道,你将如何解决这个问题.什么是好的(或最好的做法).
我之前已经问了一个关于这个课程的问题,但这里又是一个问题.
我创建了一个Complex类:
public class Complex
{
public double Real { get; set; }
public double Imaginary { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我正在实现Equals和Hashcode函数,而Equal函数考虑了一定的精度.我使用以下逻辑:
public override bool Equals(object obj)
{
//Some default null checkint etc here, the next code is all that matters.
return Math.Abs(complex.Imaginary - Imaginary) <= 0.00001 &&
Math.Abs(complex.Real - Real) <= 0.00001;
}
Run Code Online (Sandbox Code Playgroud)
这是有效的,当虚构和真实部分彼此非常接近时,它说它们是相同的.
现在我正在尝试实现HashCode函数,我已经使用了一些John skeet在这里使用的示例,目前我有以下内容.
public override int GetHashCode()
{
var hash = 17;
hash = hash*23 + Real.GetHashCode();
hash = hash*23 + Imaginary.GetHashCode(); …Run Code Online (Sandbox Code Playgroud) 在歌剧中,我可以做到以下几点
<style>
#range{
width: 20px;
heigth: 300px;
}
</style>
<input type="range" id="range" />
Run Code Online (Sandbox Code Playgroud)
它将呈现一个垂直滑块.但是,这似乎不适用于chrome.有没有办法可以做到这一点?(我不是在寻找任何jQuery滑块或任何东西)
c# ×8
asp.net ×1
binary ×1
css ×1
dependencies ×1
hashcode ×1
html ×1
integer ×1
long-integer ×1
organization ×1
precision ×1
project ×1
unit-testing ×1
while-loop ×1