2013-12-13 7 views
7

मैं कैसे bcबीसी truncate चल बिन्दु संख्या

जैसे का उपयोग कर एक चल बिन्दु संख्या काटना है, तो मुझे क्या करना

echo '4.2-1.3' | bc 

जो 2.9 आउटपुट मैं इसे कैसे काट-छांट करने के लिए मिल/उपयोग मंजिल 2

पाने के लिए

उत्तर

8

/ ऑपरेटर का उपयोग करें।

echo '(4.2-1.3)/1' | bc 
9

1 ठीक काम करता है द्वारा डिवाइडिंग अगर scale 0 है (उदाहरण के लिए, यदि आप bc साथ बीसी शुरू करने और scale परिवर्तन नहीं करते), लेकिन विफल रहता है scale सकारात्मक (है जैसे, यदि आप bc -l साथ बीसी शुरू करने या scale वृद्धि)। (नीचे प्रतिलेख देखें।) एक सामान्य समाधान के लिए, निम्न की तरह एक trunc समारोह का उपयोग करें:
define trunc(x) { auto s; s=scale; scale=0; x=x/1; scale=s; return x }

ट्रांसक्रिप्ट कि दर्शाता है कि 1 से डिवाइड अपने आप में bc -l मामले में विफल रहता है, लेकिन कैसे trunc समारोह की ओर छोटा पर ठीक काम करता है शून्य:

> bc -l 
bc 1.06.95 
[etc...] 
for (x=-4; x<4; x+=l(2)) { print x,"\t",x/1,"\n"} 
-4 -4.00000000000000000000 
-3.30685281944005469059 -3.30685281944005469059 
-2.61370563888010938118 -2.61370563888010938118 
-1.92055845832016407177 -1.92055845832016407177 
-1.22741127776021876236 -1.22741127776021876236 
-.53426409720027345295 -.53426409720027345295 
.15888308335967185646 .15888308335967185646 
.85203026391961716587 .85203026391961716587 
1.54517744447956247528 1.54517744447956247528 
2.23832462503950778469 2.23832462503950778469 
2.93147180559945309410 2.93147180559945309410 
3.62461898615939840351 3.62461898615939840351 
define trunc(x) { auto s; s=scale; scale=0; x=x/1; scale=s; return x } 
for (x=-4; x<4; x+=l(2)) { print x,"\t",trunc(x),"\n"} 
-4 -4 
-3.30685281944005469059 -3 
-2.61370563888010938118 -2 
-1.92055845832016407177 -1 
-1.22741127776021876236 -1 
-.53426409720027345295 0 
.15888308335967185646 0 
.85203026391961716587 0 
1.54517744447956247528 1 
2.23832462503950778469 2 
2.93147180559945309410 2 
3.62461898615939840351 3 
+0

जानकारी –

+3

एक लाइनर पूर्व के लिए धन्यवाद .: 'बीसी <<<" पैमाने = 10; च = (3/55); पैमाने = 0; (312 * च)/1 "' –

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