अपनी आवश्यकताओं के अनुसार, स्विफ्ट 5 के साथ, आप 9 में से एक शैली का चयन कर सकते हैं ताकि एक से एक गोल परिणाम हो सके Double
।
# 1। का उपयोग करते हुएFloatingPoint
rounded()
विधि
सबसे सरल मामले में, आप Double
rounded()
विधि का उपयोग कर सकते हैं ।
let roundedValue1 = (0.6844 * 1000).rounded() / 1000
let roundedValue2 = (0.6849 * 1000).rounded() / 1000
print(roundedValue1) // returns 0.684
print(roundedValue2) // returns 0.685
# 2। FloatingPoint
rounded(_:)
विधि का उपयोग करना
let roundedValue1 = (0.6844 * 1000).rounded(.toNearestOrEven) / 1000
let roundedValue2 = (0.6849 * 1000).rounded(.toNearestOrEven) / 1000
print(roundedValue1) // returns 0.684
print(roundedValue2) // returns 0.685
# 3। डार्विन का उपयोग करनाround
फ़ंक्शन
round
डार्विन के माध्यम से फाउंडेशन एक समारोह प्रदान करता है ।
import Foundation
let roundedValue1 = round(0.6844 * 1000) / 1000
let roundedValue2 = round(0.6849 * 1000) / 1000
print(roundedValue1) // returns 0.684
print(roundedValue2) // returns 0.685
# 4। Double
डार्विन round
और pow
कार्यों के साथ निर्मित एक विस्तार कस्टम विधि का उपयोग करना
यदि आप पिछले ऑपरेशन को कई बार दोहराना चाहते हैं, तो अपने कोड को फिर से भरना एक अच्छा विचार हो सकता है।
import Foundation
extension Double {
func roundToDecimal(_ fractionDigits: Int) -> Double {
let multiplier = pow(10, Double(fractionDigits))
return Darwin.round(self * multiplier) / multiplier
}
}
let roundedValue1 = 0.6844.roundToDecimal(3)
let roundedValue2 = 0.6849.roundToDecimal(3)
print(roundedValue1) // returns 0.684
print(roundedValue2) // returns 0.685
यदि आवश्यक हो, तो NSDecimalNumber
दशमलव संख्याओं को गोल करने के लिए एक क्रिया लेकिन शक्तिशाली समाधान प्रदान करता है।
import Foundation
let scale: Int16 = 3
let behavior = NSDecimalNumberHandler(roundingMode: .plain, scale: scale, raiseOnExactness: false, raiseOnOverflow: false, raiseOnUnderflow: false, raiseOnDivideByZero: true)
let roundedValue1 = NSDecimalNumber(value: 0.6844).rounding(accordingToBehavior: behavior)
let roundedValue2 = NSDecimalNumber(value: 0.6849).rounding(accordingToBehavior: behavior)
print(roundedValue1) // returns 0.684
print(roundedValue2) // returns 0.685
import Foundation
let scale = 3
var value1 = Decimal(0.6844)
var value2 = Decimal(0.6849)
var roundedValue1 = Decimal()
var roundedValue2 = Decimal()
NSDecimalRound(&roundedValue1, &value1, scale, NSDecimalNumber.RoundingMode.plain)
NSDecimalRound(&roundedValue2, &value2, scale, NSDecimalNumber.RoundingMode.plain)
print(roundedValue1) // returns 0.684
print(roundedValue2) // returns 0.685
# 7। का उपयोग करते हुएNSString
init(format:arguments:)
इनिशियलाइज़र करना
यदि आप NSString
अपने राउंडिंग ऑपरेशन से लौटना चाहते हैं , तो NSString
इनिशलाइज़र का उपयोग करना एक सरल लेकिन कुशल उपाय है।
import Foundation
let roundedValue1 = NSString(format: "%.3f", 0.6844)
let roundedValue2 = NSString(format: "%.3f", 0.6849)
print(roundedValue1) // prints 0.684
print(roundedValue2) // prints 0.685
# 8। String
init(format:_:)
इनिशियलाइज़र का उपयोग करना
स्विफ्ट के String
प्रकार को फाउंडेशन की NSString
कक्षा के साथ जोड़ा जाता है । इसलिए, आप String
अपने राउंडिंग ऑपरेशन से लौटने के लिए निम्नलिखित कोड का उपयोग कर सकते हैं :
import Foundation
let roundedValue1 = String(format: "%.3f", 0.6844)
let roundedValue2 = String(format: "%.3f", 0.6849)
print(roundedValue1) // prints 0.684
print(roundedValue2) // prints 0.685
यदि आप String?
अपने गोल संचालन से प्राप्त करने की अपेक्षा करते हैं , तो NumberFormatter
एक उच्च अनुकूलन समाधान प्रदान करता है।
import Foundation
let formatter = NumberFormatter()
formatter.numberStyle = NumberFormatter.Style.decimal
formatter.roundingMode = NumberFormatter.RoundingMode.halfUp
formatter.maximumFractionDigits = 3
let roundedValue1 = formatter.string(from: 0.6844)
let roundedValue2 = formatter.string(from: 0.6849)
print(String(describing: roundedValue1)) // prints Optional("0.684")
print(String(describing: roundedValue2)) // prints Optional("0.685")
round(_:)
,Double
round()
,NSString
प्रारंभकर्ता,String
प्रारंभकर्ता,NumberFormatter
, डबल विस्तार या यहां तक किNSDecimalNumber
औरDecimal
।