나는 컴파일러 오류가 발생하고있다 :중개 Windows 런타임 구성 요소 System.Decimal
유효한 Windows 런타임 만 반환해야되지 System.Decimal System.Decimal ""방법의 XXX 유형의 매개 변수 값이 "". " Windows 런타임 유형. "
어쨌든 10 진수를 사용할 수 있습니까? 아니면 그냥 값을 센트로 정수로 저장해야합니까?
나는 컴파일러 오류가 발생하고있다 :중개 Windows 런타임 구성 요소 System.Decimal
유효한 Windows 런타임 만 반환해야되지 System.Decimal System.Decimal ""방법의 XXX 유형의 매개 변수 값이 "". " Windows 런타임 유형. "
어쨌든 10 진수를 사용할 수 있습니까? 아니면 그냥 값을 센트로 정수로 저장해야합니까?
가장 쉬운 해결책은 정수로 센트로 저장하는 것이 었습니다.
나는 이것이 세계의 모든 통화에 대해 작동하지 않을 수도 있다고 생각하지만 나는이 특별한 시나리오의 문제가 아닌 달러에만 관심이있다.
대안은 "돈"패턴을 구현하는 것입니다 - 사실 http://martinfowler.com/eaaCatalog/money.html
을, 나는 가장 쉬운 방법은 내 WinRT 구성 요소의 반환 값과 매개 변수에 대한 double
을 사용하는 것입니다 발견했다.
이
내가이 내 자바 스크립트 코드에서 호출 할 내가 래퍼로서 생성 된 C# Windows 런타임 휴대용 클래스 라이브러리의 코드가public static double Round(double value, int digits)
{
// do stuff
}
내 C# 클래스 라이브러리에있는 것입니다
public static double Round(double val, int digits)
{
return MyCSharpClassLib.Class.Round(val, digits);
}
그리고 내 자바 스크립트 프로젝트에서,이 내가 승을
var round = WindowsRuntimeWrapper.Class1.round(3.1415926549, 3);
전화 그리고 무엇 오크들은 잘 됐어!
같은 주제 (재정상의 응용 프로그램에서 십진법과 이중 문항의 문제)는 같은 주제에 대한 다른 질문의 수로 나타납니다. http://stackoverflow.com/search?q=double+versus+decimal 짧은 대답은 "하지 마라"입니다. 당신은 사용자 지정 고정 소수점 데이터 형식을 사용하는 것이 더 낫습니다. WinRT에서 제외시킨 많은 것들이 내 마음을 괴롭 힙니다. System.Decimal은 분명히 그 중 하나입니다. –
글쎄, 돈을 위해 Decimal을 사용해야합니다. 내 중개 런타임 구성 요소에 Decimal을 사용할 수없는 이유에 대해 다소 괴롭힘을 당했다고 생각합니다. 이 맞춤형 고정 소수점 데이터 형식을 확장 할 수 있습니까? –
사용할 수있는 경우 돈을 위해 Decimal을 사용해야합니다. 부동 소수점 형식으로 존재하는 반올림 오류를 해결합니다. 고정 소수점을 연구 할 수 있습니다. 웹에 많은 것들이 있습니다. 짧은 버전은 예를 들어 페니 또는 페니의 100 분의 1을 나타내는 정수를 유지할 수 있습니다. 덧셈/뺄셈은 정상적으로 작동합니다. 물론 곱셈과 나눗셈을 위해 소수점의 움직임을 추적해야합니다. –