solved the problem so maybe someone come in handy
$percents_year = "40.4"; $number = sprintf('%.3f', $percents_year); $res = explode('.', floatval($number)); $num = $res[0]; $dec = isset($res[1]) ? $res[1] : 0; $res = explode('.',$number); $decStr = isset($res[1]) ? $res[1] : 0; if (floatval($dec) < 100) { $first = (new \MessageFormatter('ru-RU', '{n, spellout}'))->format(['n' => $num]); $secont = (new \MessageFormatter('ru-RU', '{n, spellout}'))->format(['n' => $decStr]); $resText = $first . ' целых ' . $secont . ' тысячных'; } else { $resText = (new \MessageFormatter('ru-RU', '{n, spellout}'))->format(['n' => $number]); } $percents_year_text = $resText;