0
我在使用Neo4jClient与我的Neo4J服务器进行交互的程序中使用decimal
类型的属性时遇到问题。Neo4jClient:丢弃的小数点
using System;
using Neo4jClient;
namespace TestProject
{
class Program
{
static void Main()
{
var graphClient = new GraphClient(new Uri("http://localhost:7474/db/data"));
graphClient.Connect();
const decimal socialFactor = 0.5m;
var userIn = new User {Name = "John Doe", SocialFactor = socialFactor};
var nodeRef = graphClient.Create(userIn);
var userOut = graphClient.Get(nodeRef).Data;
Console.WriteLine(userOut.Name + ", " + userOut.SocialFactor);
Console.WriteLine(userOut.SocialFactor == socialFactor ? "win" : "fail!");
}
}
class User
{
public string Name { get; set; }
public decimal SocialFactor { get; set; }
}
}
什么程序做的就是插入一个用户节点与0.5(userIn
)社会因素纳入Neo4j的,并立即再次检索用户节点(userOut
)。问题是userOut.SocialFactor
是5而不是0.5!
奇怪的是,当我将类型更改为double
时,没有问题,但这显然是我不想做的事情。
这是一个错误?有没有某种解决方法?
感谢, 扬
您使用的是什么版本的Neo4jclient?我正在使用1.0.0.594并复制代码并在控制台应用程序中运行它(很好地提供完整的工作程序btw!),我得到0.5和'Win'。 –
@ChrisSkardon:是的,这正是我正在使用的版本,我得到5并且回退。我发现它必须对我的系统的文化做些什么。我们在这里使用逗号作为小数点。当我将设置更改为使用实际点时,该程序按预期工作。你认为这是一个错误? –
我会用整个代码将它添加到neo4jclient问题页面(https://bitbucket.org/Readify/neo4jclient/issues?status=new&status=open),但我必须说 - 我无法将它发生,如果我添加行'System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(“FR-FR”);'我的代码上面(法国使用',')我仍然得到的结果很好,所以。你在用什么文化,你在哪里改变文化? –