2013-09-25 2 views
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; } 
    } 
} 

는 Neo4j에 0.5의 사회적 요인 (userIn)와 사용자 노드를 삽입하고, 즉시 (userOut) 다시 사용자 노드를 검색합니다. 문제는 userOut.SocialFactor이 0.5 대신 5라는 것입니다.

이상하게도 유형을 double으로 변경하면 아무런 문제가 없지만 분명히 원하지 않는 것입니다.

이것은 버그입니까? 해결 방법이 있습니까?

감사합니다, 월

+0

어떤 버전의 Neo4jclient를 사용하고 있습니까? 나는 1.0.0.594를 사용하고 코드를 복사하고 콘솔 앱에서 실행한다. (완전히 작동하는 프로그램 btw를 제공하는 좋은 일이다!) 나는 0.5와 'Win'을 되 찾는다. –

+0

@ChrisSkardon : 예, 사용하고있는 버전과 정확히 일치합니다. 5를 얻고 다시 실패합니다. 나는 그것이 내 시스템의 문화와 무언가를해야한다는 것을 알았다. 여기서 쉼표를 소수점 "점"으로 사용합니다. 실제 도트를 사용하도록 설정을 변경하면 프로그램이 예상대로 작동합니다. 그게 버그라고 생각하니? –

+0

전체 코드와 함께 neo4jclient 문제 페이지 (https://bitbucket.org/Readify/neo4jclient/issues?status=new&status=open)에 추가 하겠지만, 말할 필요가 있습니다. "System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo ("fr-FR "); 줄을 추가하면 (프랑스가 ','을 사용하는) 코드 위에 여전히 결과가 나옵니다. 어떤 문화를 사용하고 있습니까, 어디에서 문화를 바꾸고 있습니까? –

답변

0

네, 그것은 버그 이었지만 최근 Neo4jClient의 version 1.0.0.595에 고정 된 것으로 밝혀졌습니다.