webForumDet fria alternativet

Korta av sträng?

7 svar · 382 visningar · startad av streetrobban

streetrobbanMedlem sedan jan. 20011 140 inlägg
#1

Hej!

Hur gör jag för att korta av en sträng efter ett kommatecken? Ex:

12.761 ska bli 12.7
4.2344122 ska bli 4.2

Tack :)

metalboyMedlem sedan jan. 2005953 inlägg
#2

Är det en sträng eller ett tal? För strängar kan du använda t.ex. substr() tillsammans med strpos(). För tal kan du använda round(), floor(), ceil() eller number_format().

(Det borde vara ett tal)

streetrobbanMedlem sedan jan. 20011 140 inlägg
#3

Hmm, det är ett tal i en sträng? $tal = '12.761'. Eller? :) Jag vill inte runda av med round() utan bara klippa bort alla siffror utom den första efter punkten, och de innan punkten.

metalboyMedlem sedan jan. 2005953 inlägg
#4

PHP är ju ett väldigt förlåtande språk, så du kan använda tal-funktionerna ändå. Alltså t.ex. $avrundat = round($tal, 1) för 1 decimal. Men varför ha det som en sträng? Det tvingar ju bara PHP till en onödig typomvandling.

streetrobbanMedlem sedan jan. 20011 140 inlägg
#5

Jag hämtar värdena från ett formulär/databas och det är väl därför. Men om jag använder round($tal, 1) på t.ex. 12.961 så kommer den väl att skriva ut 13.0 och inte 12.9 ?

metalboyMedlem sedan jan. 2005953 inlägg
#6

Det kommer den att göra.

Edit: Men titta på 3 argumentet
http://se2.php.net/round

Edit igen: får inte 3 argumentet att fungera :/

Du kan ju som sagt använda t.ex. substr() i kombination med strpos()

streetrobbanMedlem sedan jan. 20011 140 inlägg
#7

Okej! Så följande kod löste problemet. Tack för hjälpen Metalboy!

<?php
// Hitta var . är
$mystring = '1.9621511';
$findme = '.';
$pos = strpos($mystring, $findme);

// Fråga mig inte varför
$pos = $pos + 2;

// Utan att korta av
echo "$mystring<br><br>";

// Korta av
echo substr($mystring,0,$pos);
?>
GunnarDMedlem sedan juni 20014 290 inlägg
#8

Varför inte använda floor() :

$tal="123.456";
$tal2=floor($tal*100)/100;
echo "Tal2=$tal2\n";

Vilket kommer att skriva ut 123.45

Men notera att -123.456 blir -123.46 :)

124 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
121 ms — hämta tråd, inlägg och bilagor (db)