2013-11-04 105 views

回答

0

我找到了符合您的需求,以便你可以試試下面的腳本(從http://www.macosxautomation.com/applescript/sbrt/sbrt-02.html):

my round_truncate(20.0, 0) 

on round_truncate(this_number, decimal_places) 
    if decimal_places is 0 then 
     set this_number to this_number + 0.5 
     return number_to_text(this_number div 1) 
    end if 

    set the rounding_value to "5" 
    repeat decimal_places times 
     set the rounding_value to "0" & the rounding_value 
    end repeat 
    set the rounding_value to ("." & the rounding_value) as number 

    set this_number to this_number + rounding_value 

    set the mod_value to "1" 
    repeat decimal_places - 1 times 
     set the mod_value to "0" & the mod_value 
    end repeat 
    set the mod_value to ("." & the mod_value) as number 

    set second_part to (this_number mod 1) div the mod_value 
    if the length of (the second_part as text) is less than the decimal_places then 
     repeat decimal_places - (the length of (the second_part as text)) times 
      set second_part to ("0" & second_part) as string 
     end repeat 
    end if 

    set first_part to this_number div 1 
    set first_part to number_to_text(first_part) 
    set this_number to (first_part & "." & second_part) 

    return this_number 
end round_truncate 

on number_to_text(this_number) 
    set this_number to this_number as string 
    if this_number contains "E+" then 
     set x to the offset of "." in this_number 
     set y to the offset of "+" in this_number 
     set z to the offset of "E" in this_number 
     set the decimal_adjust to characters (y - (length of this_number)) thru -1 of this_number as string as number 
     if x is not 0 then 
      set the first_part to characters 1 thru (x - 1) of this_number as string 
     else 
      set the first_part to "" 
     end if 
     set the second_part to characters (x + 1) thru (z - 1) of this_number as string 
     set the converted_number to the first_part 
     repeat with i from 1 to the decimal_adjust 
      try 
       set the converted_number to the converted_number & character i of the second_part 
      on error 
       set the converted_number to the converted_number & "0" 
      end try 
     end repeat 
     return the converted_number 
    else 
     return this_number 
    end if 
end number_to_text 
0

我的第一個建議是你應該給一點的例子來接近你所需要的答案。 你如何得到這個「20.0」?這看起來像Excel的自動化,而不是Applescript。 所以只要你使用AppleScript工作,應該OK調用

set myLineNumber to 20 
get value of cell (A & myLineNumber) 

現在,如果你正從Excel中的「20」值,那是另一件事使Excel可以拿出數相當討厭值。 我沒有我的Mac在這裏,但試圖像

set myLineNumber to valueFromExcel mod 1 -- "mod" is for modulo 

事情應該做你所需要的。

您還可以使用「鑄造」,這意味着像「20」的文本值變成例如以一些像20 對於你來說,這將是:

set myLineNumber to (valueFromExcel as integer) -- valueFromExcel being "20" or 20.0 for instance 
相關問題