2011-08-08 9 views
5

संभव डुप्लिकेट:
C# Double - ToString() formatting with two decimal places but no roundingसी # में, मुझे गोल किए बिना दशमलव बिंदु मानों की आवश्यक संख्या कैसे प्राप्त हो सकती है?

मैं नाव नंबर का उपयोग कर रहा हूँ और मैं किसी भी गोलाई बंद किया जा रहा है बिना दशमलव अंकों की संख्या प्राप्त करना चाहते हैं।

उदाहरण के लिए। फ्लोट x = 12.6789 यदि मैं 2 दशमलव बिंदु तक चाहता हूं, तो मुझे (x = 12.67) और नहीं (x = 12.68) प्राप्त करना चाहिए जो गोल होने पर होता है।

प्लज़ सुझाव देते हैं कि ऐसा करने का सबसे अच्छा तरीका कौन सा है।

+0

आपने क्या प्रयास किया है? क्या काम नहीं किया? कृपया अपना कोड पोस्ट करें और समझाएं कि आपको कहां समस्याएं हैं। – Oded

उत्तर

8

आप इस के लिए Math.Truncate() उपयोग करने के लिए सक्षम होना चाहिए: कास्टिंग द्वारा

decimal x = 12.6789m; 
x = Math.Truncate(x * 100)/100; //This will output 12.67 
3

आप इस लक्ष्य को हासिल कर सकते हैं:

float x = 12.6789; 
float result = ((int)(x * 100.0))/100.0; 
1

शायद इस के लिए एक रूपरेखा कॉल भी नहीं है, लेकिन आप हमेशा एक लिख सकता है जैसे:

//Scale up, floor, then round down. 
//ie: 1.557 
// scaled up: 155.7 
// floord: 155 
// scaled down: 1.55 
public float MyTruncate(float f, int precision){ 
    float scale = precision * 10; 
    return (Math.Floor(f * scale))/scale; 
} 
संबंधित मुद्दे