Multiply by 10 and store in an intermediate integer file such as N7:0, then divide by 10 again.
Edit: I believe my solution will actually round the value, 2.58 would become 2.6. Do you want to truncate, round or don't care?
To compensate for rounding, subtract .5.
MUL F8:0 10.0 F8:0
SUB F8:0 .5 N7:0
MUL N7:0 0.1 F8:0
2.528195 * 10 = 25.28195
25.28195 - .5 = 24.78195 ---> rounds to 25 when moved to integer
25 * .1 = 2.5
2.5999 * 10 = 25.999
25.999 - .5 = 25.4999 ---> rounds to 25 when moved to integer
25 * .1 = 2.5
OK, now that the technique that works on paper is out of the way, lets talk about floating point numbers in computers. Computers (PLCs included) use something called IEEE754 format to represent floating point numbers in binary. There are lots of numbers that cannot be represented exactly in IEEE 754 floating point format. One such number is any decimal 1/10^n, ie, .1, .01, .001, etc. In other words, no matter how many times you try, you are not going to truncate to 1.1 or 2.1 or 3.1, etc. to a single decimal place because the number cannot be represented in IEEE754, instead you get 0.499999940395355 and thats a close as you're going to get, no matter how hard you try. You will run into the same problem with any #.2, #.4, #.7, #.8, and an infinite number of other combinations.
There are a number of threads on the forum on the subject - search IEEE 754. It is generally counterproductive to truncate your float. The routines that display floating point numbers on your computer screen have sophisticated and complex algorithms that display the number to a specific decimal place, and that know to display .1 on the computer screen when they see 0.499999940395355 but they usually don't try and truncate the actual float. See
http://babbage.cs.qc.edu/IEEE-754/Decimal.html and
http://en.wikipedia.org/wiki/IEEE_754-1985 to see how some numbers are actually stored.
Give us some more information about what you are trying to accomplish and maybe we can help.