تنسيق العملة الصحيح في Golang
عند العمل مع تنسيق العملة، من الضروري مراعاة المتطلبات المحددة لكل مجموعة عملة ولغة. باستخدام golang.org/x/text/currency، يمكنك بسهولة تنسيق القيم بناءً على الاتفاقيات المحلية. ومع ذلك، قد تواجه بعض التحديات في الحصول على المخرجات المطلوبة.استخدام رموز العملة
في التعليمات البرمجية الخاصة بك، يمكنك استخدام العملة.رمز لاسترداد رمز العملة لـ رمز ISO المحدد. ومع ذلك، عند استخدام هذه الطريقة دون توفير سياق لغة، قد لا تحصل على الفواصل أو تنسيق الأرقام المتوقع.دمج التنسيقات المحلية
بدلاً من محاولة الإنشاء يدويًا التنسيق الخاص بك، يمكنك الاستفادة من حزم العرض والرسائل لاسترداد التنسيق المناسب تلقائيًا بناءً على اللغة والمنطقة. إليك مثال:import (
"fmt"
"golang.org/x/text/currency"
"golang.org/x/text/language"
"golang.org/x/text/message"
)
func formatCurrency(value int64, currencyCode string, languageCode string) string {
lang, _ := language.Parse(languageCode)
p := message.NewPrinter(lang)
unit, _ := currency.ParseISO(currencyCode)
return p.Sprintf("%v%v", currency.Symbol(unit), float64(value))
}
تأخذ هذه الوظيفة قيمة ورمز العملة ورمز اللغة وتقوم بإرجاع سلسلة عملة منسقة بشكل صحيح.معالجة وحدات الزيادة
بعض العملات لها وحدة زيادة ثابتة، مثل 5 أو 10 سنتات. لحساب ذلك، يمكنك استخدام حزمة الأرقام لتحديد الزيادة:import (
"golang.org/x/text/currency"
"golang.org/x/text/number"
)
func formatWithIncrement(value int64, currencyCode string, increment int) string {
unit, _ := currency.ParseISO(currencyCode)
scale, inc := currency.Cash.Rounding(unit)
dec := number.Decimal(float64(value), number.Scale(scale), number.IncrementString(fmt.Sprintf("%.2f", float64(inc))))
return fmt.Sprintf("%v%v", currency.Symbol(unit), dec)
}
من خلال توفير سياق اللغة، واستنتاج تنسيق العملة من رموز اللغة، والنظر في وحدات الزيادة، يمكنك إنشاء حلول مرنة ودقيقة لتنسيق العملة في Golang باستخدام golang.org/x/text/currency. تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3