salam. php də 1.8 ədədini necə etmək olarki 1.8 deyil 1.80 kimi göstərsin. və ya 2 ədədini 2 kimi yox 2.00 və ya 2.1 deyil 2.10
salam. php də 1.8 ədədini necə etmək olarki 1.8 deyil 1.80 kimi göstərsin. və ya 2 ədədini 2 kimi yox 2.00 və ya 2.1 deyil 2.10
Verilmiş cavablar və yazılan şərhlər (18 cavab var)
2
Salam. number_format() funksiyasından istifade ede bilərsən bunun üçün.
1
$a = 1.8;
2
$b = 2;
3
$c = 2.1;
4
5
echo number_format($a, 2); // 1.80
6
echo number_format($b, 2); // 2.00
7
echo number_format($c, 2); // 2.10
0
üzr istəyirəm mən fikrimi çatdira bilməmişəm, suali səhv vermişəm .
yeni mənə lazımdıki 1=1.00, 198=198. 1578=157 kimi göstərsin. yeni ədəd sayını 3 rəqəmli olaraq saxlasin 1=1.00 göstərirsə 198=198.00 kimi göstərməsin elə 198 kimi göstərsin
1
Yenə də number_format() funksiyasından istifadə etməklə:
əgər ədəd 10-dan kiçikdirsə, echo number_format($a, 2); // 1.80
əgər ədəd 100-dən kiçik 10-dan böyük və ya bərabərdirsə, echo number_format($a, 1); // 27.0
qalan hallarda adi çap kimi…
0
Mehman Elxanoglu, qardaş problem elә ordadırki әdәd dinamik deyil deyişgәndir, gah 3dәn böyük gahda 3dәn kiçik olur.
1
Buyur.
1
function convert_to($a) {
2
$len = strlen($a);
3
if($len == 3)
4
return $a;
5
if($len > 3)
6
return substr($a, $len-3);
7
if($len < 3)
8
return $a.'.'.str_repeat(0,(3-$len));
9
}
10
11
echo convert_to(5).'<br/>'; // 5.00
12
echo convert_to(55).'<br/>'; // 55.0
13
echo convert_to(555).'<br/>'; // 555
14
echo convert_to(5555); // 555
1
1
$numbers = array(1, 200, 300, 45756, 3456, 2, 22);
2
3
foreach($numbers as $value)
4
echo $value . ' = ' . (strlen($value) >= 3 ? substr($value, 0, 3) : number_format($value, 3 - strlen($value))) . '<br/>';
5
6
//Nəticə:
7
1 = 1.00
8
200 = 200
9
300 = 300
10
45756 = 457
11
3456 = 345
12
2 = 2.00
13
22 = 22.0
1
Bu da funksiya kimi
1
function _Convert($n)
2
{
3
return strlen($n) >= 3 ? substr($n, 0, 3) : number_format($n, 3 - strlen($n));
4
}
2
Bu isə daha mükəmməl forması
1
function _Convert($n)
2
{
3
return number_format(substr($n, 0, 3), 3 - strlen($n));
4
}
0
chox sagolun eziyyet chekmisiz haminiza teshekkur edirem ama bu yazdiqin kodlar menim ishimi tam gormur. )
yeni bunlar ancag tam ededleri ishleyir qaliqli ededlerde ise ishlemir.
mene lazim idi meselcun 1.85 ise ele 1.85 qalsin 1 ise 1.00 olsun, ve ya 2354 ise 235 olsun. duzdur 1=1.00 ve 2354=235 alinir ama 1.85 de, 1.3545 ve ya 3543.22 oldugda artiq pass verir kodlar )
1
bes 20.1 nece olsun?
1
1
<?
2
function aaa($a){
3
$c = $a*100;
4
if(strlen($c)>=5){
5
$b = substr($c, 0, 3);
6
}
7
else{
8
$d = pow(10,-2);
9
$b = number_format($c*$d,2);
10
$b = substr($b, 0, 4);
11
12
}
13
return $b;
14
}
15
echo aaa("5435")."<br/>";
16
echo aaa("20.1")."<br/>";
17
echo aaa(2.01)."<br/>";
18
echo aaa("1")."<br/>";
19
?>
2
PHP-də çarəsiz heç nə yoxdu
1
function _Convert($n)
2
{
3
return number_format(substr($n, 0, is_int($n) || strlen((int)$n) > 4 ? 3 : 4), 3 - strlen((int)$n));
4
}
1
bu funksiya 5435 uchun 5,435 qaytarir.
1
Çünki string kimi daxil etmisən rəqəmi. Amma bunu da həll etmək lazımdı.
1
Version 1.3
Bəzi ədədlər string kimi verildikdə funksiya düz işləmirdi.
1
function _Convert($n)
2
{
3
return number_format(substr($n, 0, is_int($n) || strlen((int)$n) >= 4 ? 3 : 4), 3 - strlen((int)$n));
4
}
1
bu yazdigin funksiyada ne bash verdiyini izah ede bilersen?
bildiyim qeder ile number_format funksiyasinin 3cu ve 4cu arqumentleri noqte nin ve minliyi ayirmanin simvolunu gosterir. bunu nece islediyini basa dusmek isteyirem, faktiki olaraq 3-cu ve 4-cu arqumentlerin yerine yazmisan.
1
cox sagolun, sonuncu functionlariniz ishime yaradi, Allah sizden razi olsun. eziyyetinizi halal eleyin
3
1
<em>NModern (Profil) (22:30, 07/12/2013 ) #34454
2
3
bu yazdigin funksiyada ne bash verdiyini izah ede bilersen?</em>
3 və 4-cü arqument işlədilməyib. Daha doğrusu susma halına görə saxlanılıb.
1-ci arqument bu substr($n, 0, is_int($n) || strlen((int)$n) >= 4 ? 3 : 4)
2-ci arqument isə budur 3 – strlen((int)$n)
Funksiya nə edir ?
Verilmiş rəqəmi is_int yoxlayır tam ədəddir ya yox, tam ədəddirsə və ya rəqəmi (int) ilə zorla tam ədədə çevirib saydıqda 4-dən böyük bərabərdisə verilmiş rəqəmin ilk 3 həddini kəsirik.
Məs, verilmiş rəqəm = 3456.67 burda is_int qəbul eləmir, (int) çevirir olur 3456 strlen 4 sayır, demək ki ilk üçünü kəsmək lazımdır. Qalır 345.
Alınır number_format(345, -1); Burda isə 4-cü arqument minliklərə ayırdığı üçün -1 heç bir rol oynamır. Çünki ədəd 3 rəqəmdən ibarətdir, minliklərə ayrıla bilmir.
Qalan bütün hallarda isə verilmiş rəqəmi kəsmirik, çünki tam ədəd olmur. Və (int) ilə çevirdikdə belə sayı 4-dən kiçik olur. Demək ki, kəsməyə ehtiyac yoxdur. Olduğu kimi saxlayırıq. Məsələn, 34.5 olarsa rəqəm. substr heç nə etmir. (int) 34.5 verir 34. 3-2 qalır 1. Nəticə number_format(34.5, 1); => 34.5
Sual verin
Cavab verin