2016-07-19 15 views
7

जैसा कि आप पूरे इंटरनेट using floats to represent currency is a very bad idea पर पढ़ सकते हैं। अनुशंसित सर्वोत्तम अभ्यास इसके बजाय सेंट का प्रतिनिधित्व करने वाले पूर्णांक का उपयोग करना है। इस तरह आप सुरक्षित हैं कि किसी भी परिशुद्धता की समस्याओं में भाग न लें, खासकर यदि आप कुछ गणना कर रहे हैं।सेंट्स के पूर्णांक के साथ कोणीय मुद्रा फ़िल्टर का उपयोग

जैसा कि मैं मूर्ख हूं और जिस तरह से मैं आशावादी हूं, मैंने सभी चेतावनी के बावजूद - मेरे ऐप में मुद्राओं का प्रतिनिधित्व करने के लिए तैरता है। यह पहले बहुत अच्छी तरह से चला गया। अब मैं सभी प्रकार की समस्याओं (विशेष रूप से तुलना के साथ) में चल रहा हूं और फ्लोट से पूर्णांक में स्विच करना चाहता हूं।

दुर्भाग्य से कोणीय मुद्रा फ़िल्टर के लिए इनपुट के रूप में सेंट पूर्णांक का समर्थन नहीं करता है (कम से कम जहां तक ​​मुझे पता है)। मैं थोड़ा आश्चर्यचकित हूं कि ऐसा लगता है कि अब तक कोई भी इसके साथ नहीं आया है (जिथूब पर कोई भी संबंधित मुद्दे नहीं, SO आदि पर कुछ भी नहीं)।

क्या कोई सर्वोत्तम प्रथा है? आप किसी भी कमियां के बारे में सोच सकता है इस तरह एक साधारण फिल्टर हो सकता है: not all currencies use 100 as their base ('करने के लिए संख्या नीचे स्कैन:

angular 
    .module('myApp') 
    .filter('cents', ['$filter', function($filter) { 
     return function(cents, symbol, fractionSize) { 
      var asFloat = cents/100; 
      return $filter('currency')(asFloat, symbol, fractionSize); 
     }; 
    }]); 
+0

आप जिस इनपुट/आउटपुट की अपेक्षा कर रहे हैं वह क्या है? – developer033

+0

वर्तमान इनपुट: '(फ्लोट) 5.9 7' आउटपुट:' 5,97 € '। वॉन्टेड इनपुट: '(int) 597' वॉन्टेड आउटपुट:' 5,97 € ' –

उत्तर

2

नकारात्मक पक्ष यह है शायद इसी कारण कोणीय पहली जगह में चारों ओर सेंट फेंकने का समर्थन नहीं करता होगा उस तालिका का मूल 'कॉलम।)

+0

वाह, यह एक बहुत ही रोचक तथ्य है जिसे मुझे पता नहीं था! धन्यवाद। लेकिन मेरी राय में कि "चारों ओर फेंकने" के खिलाफ अब तक कोई तर्क नहीं है। आपके द्वारा इंगित की गई समस्या को वैकल्पिक चर (सभी 100 आधारित मुद्राओं के लिए डिफ़ॉल्ट सेट के साथ) को आसानी से हल किया जा सकता है। मुझे लगता है कि यह वास्तव में बहस के लिए नहीं है कि मुद्रा के लिए फ्लोट का उपयोग करना एक अच्छा या बुरा विचार है। और सेंट का उपयोग करने के फायदे दूर तक एक और चर के नुकसान को अपमानित करते हैं। –

+0

जिज्ञासा से बाहर: क्या आपके पास इस विषय के बारे में वास्तविक चर्चा का एक लिंक है? दुर्भाग्य से मुझे कुछ भी नहीं मिला है कि कोणीय केंद्र पूर्णांक का समर्थन क्यों नहीं करता है। –

+0

नहीं, कोई लिंक नहीं। लेकिन ध्यान दें कि मुद्रा फ़िल्टर मुद्रा चिह्न या किसी अन्य लोकेल संकेत स्वीकार नहीं करता है, इसलिए यह नहीं पता कि आपका संख्यात्मक मूल्य किस मुद्रा का प्रतिनिधित्व करता है, और इसलिए इसे सामान्य नहीं किया जा सकता है। मुझे लगता है कि यह अब उपलब्ध मानक 'Intl.NumberFormat' विकल्प को इंगित करने के लायक है: 'नया Intl.NumberFormat (navigator.language, {शैली:' मुद्रा ', मुद्रा:' EUR '}) प्रारूप (1234.56)' – searlea

संबंधित मुद्दे