Wie gestutzt ich eine Gleitkommazahl mit bc
bc truncate Gleitkommazahl
zB wenn ich
echo '4.2-1.3' | bc
die 2.9
gibt, wie ich es bekommen trunkieren/Nutzung Boden 2
Wie gestutzt ich eine Gleitkommazahl mit bc
bc truncate Gleitkommazahl
zB wenn ich
echo '4.2-1.3' | bc
die 2.9
gibt, wie ich es bekommen trunkieren/Nutzung Boden 2
Verwenden Sie den Operator /
.
echo '(4.2-1.3)/1' | bc
Division durch 1 Werke in Ordnung, wenn scale
0 ist (zum Beispiel, wenn Sie beginnen mit bc bc
und nicht scale
ändern), aber schlägt fehl, wenn scale
positiv ist (zum Beispiel, wenn Sie beginnen bc mit bc -l
oder scale
erhöhen). (Siehe Transkript weiter unten.) Für eine allgemeine Lösung, verwenden Sie eine trunc
Funktion wie folgt aus:
define trunc(x) { auto s; s=scale; scale=0; x=x/1; scale=s; return x }
Transcript, das zeigt, wie Division durch 1 für sich allein in der bc -l
Fall versagt, aber wie trunc
Funktion funktioniert ok bei Kürzen Richtung Null:
> 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
Danke für die Informationen –
einzeiler Beisp .: 'bc <<< "scale = 10; f = (3/55); scale = 0; (312 * F)/1"' –